C言語でのエスケープ文字の詳細な説明
前書き
文字、通常はキーボードで入力すると、直接表示できる文字が表示可能な文字になります。
ただし、キーボードに対応するキーがない文字もあります。これらの文字のほとんどは制御用に設計されており、制御文字と呼ばれます。制御文字を入力する場合は、エスケープ文字を使用する必要があります。「\」で始まる文字を使用します。
エスケープキャラクター
C言語では、エスケープ文字の種類は多くなく、おそらく次のようなものがあります。
-
\ a→ベル
-
\ f→ページを変更
-
\ n→newline
-
\ 0→文字列の終わり
-
\ r→キャリッジリターン(現在の行の先頭に戻る)
-
\ b→バックスペース
-
\ t→水平タブ
-
\ v→垂直タブ
それらの最初のいくつかについては何も言うことはありません。\ bの意味はバックスペースであり、これはカーソルを前のユニットに移動することを意味します。たとえばprintf("123\b45");
、その後は1245を出力しますが、そのprintf("12345\b");
時点では12345を出力します。\ bはカーソルを後ろからしか移動しないため3最初の出力関数の後で3の前に移動し、次に45を出力すると、3が上書きされたため、削除されたように見えますが、カーソルを移動した後でのみ、\ bを最後に配置した場合何も行われておらず、削除されていないようです。たとえば、次のコード:
char a = 'a', b = 'b', c = 'c';
printf("%c %c %c\n",a,b,c);
printf("%c%c\b%c\n",a,b,c);
printf("%c%c%c\b\n", a, b, c);
printf("123\b45");
操作の結果は次のとおりです。
次の\ vは垂直タブです。これは、入力が改行後のテキスト位置に揃えられることを意味します。テーブルのように。ただし、コマンドラインウィンドウでは役に立たず、通常はテキスト編集にのみ使用されます。\ tは水平タブであり、長いスペースのようにタブを押すこととして表現されます。実際、テキストではスペースも文字と見なされ、タブキーは私たちが通常理解するスペースです。
転送文字を印刷する
コードを書いているときに、元々エスケープ文字を使用したくなかったが、システムはそれらをエスケープ文字として認識している場合があります。たとえば、次のように出力します。D:\ data \ text \ main.cこの時点で、次のようになります。印刷はD:data extmain.cになります。このとき、スラッシュを印刷するにはバックスラッシュを追加する必要があります。同様に、エスケープ文字を印刷する場合は、バックスラッシュを追加する必要があります。たとえば、\ nを印刷する場合は、タイプ\ nこの時点で、最初の2つのバックスラッシュはバックスラッシュ文字を印刷していると判断され、エスケープ文字を形成するために次の文字に関連付けられません。したがって、コードを次のように変更する必要があります。
`printf(" D:\ data \ text \ main.c ");
出力は次のとおりです。
その他のエスケープキャラクター
C言語では、すべての文字を「+ ASCIIコード値」で表すことができます。
- '\ x' + 16進数dd
- '\' + octal番号ddd
ここで、ddは使用可能なビット数です。これを超えると、ASCIIコードが97であるなど、文字の印刷エラーが発生します
。printf( "\ X61");
printf( "\ 141 is");
結果を次のように出力します。 :
ここで、10進数を入力することはできず、すべての8進数または16進数をこの方法で文字に変換できるわけではないことに注意してください。私たちが知っているASCIIコード値は10進数で表されているためです。ただし、一部の8進数または16進数は、10進数に変換すると10進数になります。これらの8進数と16進数は文字に変換できません。