トップC言語入門 > C言語のエスケープ文字

C言語のエスケープ文字

1.C言語のエスケープ文字とは

C言語では、文字や文字列の要素として、英数字(a,b,c,A,B,C,0,1,2,…)、記号(+,-,=,…)のほか、 改行コードやタブコードなど表示や印字されない文字(非印字文字と呼ぶ)がある。

これらは \n や \t のように、2文字を使って表現される。 このような文字をエスケープ文字(escape character)と言う。\をエスケープ文字と呼んだり、 \n全体をエスケープ文字と呼んだりする。

  1. ASCIIコードで言えば、0x20〜0x7E(32〜126)が、通常は、1文字で表現され、 C言語のエスケープ文字はこれ以外の文字、すなわち 0x00〜0x19,0x7F(0〜31,127)の一部、
  2. 文字・文字列を括る引用符('および"")、
  3. \自身
である。

例えば、文字列 "3\tt" は文字列の長さは3であり、\t はASCIIコードの 0x09 であることから、 ASCIIコードで表すと文字列末尾のヌル文字を加えて 0x33, 0x09, 0x74, 0x00 の4バイトである。

'3''\t''t''\0'
33097400

引用符は印字可能な文字であるが、文字とか、文字列の終わりと間違わないように、 '\'', "\"" と表現する。

また、\自体を普通の文字として表したいときは \\ のように \ を二つ重ねる。

2.C言語のエスケープ文字一覧表

エスケープ文字一覧表を下に示す。\0 は出典には含まれていなかったので、追加した。 \xdd の d は数字 0, 1, ..., 9 を表す。

エスケープ文字一覧表(escape characters)
Escape SequenceCharacter
\0 Null
\a Bell (beep)
\b Backspace
\f Formfeed
\n Newline
\r Return
\t Tab
\\ Backslash
\' Single quote
\" Double quote
\xdd Hexadecimal representation
[出典:http://www.gillius.org/ctut/app_a.htm, \0はない]

3.printf, scanf関数の書式指定

printf, scanf関数の書式指定に %d, %c, %s, %f などが使われる。 ここでの % の役割は、エスケープ文字の \ と似ている一面がある。 %自体を普通の文字として表す時は %% のように % を二つ重ねる。

ただし、% はprintf、scanf関数が解釈処理をするものであって、 コンパイラとしては、 % は普通の文字であり、エスケープ文字のような変換は起きない。