文字定数中の C 文字列

C 言語の文字列値は,最後にヌル文字 (CHAR(0)) を持っており,印字不能文字 (バックスペースなど) を含むことができます。

印字不能文字は拡張文字列によって宣言されます。拡張文字列は,エスケープ文字としてバックスラッシュ (\) を使用し,その後に目的の印字不能文字を示す 1 つの文字を続けることによって宣言します。

この形式の文字列は,標準の文字定数の後に文字 C を付けることによって宣言します。こうすると,標準の文字定数は,C 言語の定数として解釈されます。バックスラッシュはエスケープとして扱われ,(文字列がすでにヌル文字で終わっている場合でも) 文字列の末尾にヌル文字が自動的に追加されます。

次表に,文字定数中で使用可能な拡張文字列を示します。

C 言語形式の拡張文字列

拡張文字列 意味
\a または \A ベル
\b または \B バックスペース
\f または \F 改頁
\n または \N 改行
\r または \R 復帰
\t または \T 水平タブ
\v または \V 垂直タブ
\xhh または \Xhh 16 進ビット・パターン
\ooo 8 進ビット・パターン
\0 ヌル文字
\\ バックスラッシュ (\)

文字列がこの表にない拡張文字列を含んでいる場合,バックスラッシュは無視されます。

また,C 文字列は有効な Fortran 文字定数でなくてはなりません。文字定数をアポストロフィで囲む場合,文字列そのものに含まれているアポストロフィは,アポストロフィを 2 つ続けて宣言します ('')。

たとえば,拡張文字列 \'string を指定すると,Fortran はアポストロフィを文字列の終わりとして解釈するので,コンパイル・エラーが発生します。正しい形式は \''string です。

文字列を引用符で囲む場合,文字列そのものに含まれている引用符は,引用符を 2 つ続けて宣言します ("")。

文字列 \ooo\xhh を使うと,任意の ASCII 文字を 1 ~ 3 けたの 8 進文字コードとして,または 1 けたか 2 けたの 16 進文字コードとして宣言することができます。個々の 8 進の数字は 0 ~ 7 の範囲でなくてはならず,個々の 16 進の数字は 0 ~ F の範囲でなくてはなりません。たとえば,C 文字列の '\010'C'\x08'C は,どちらもバックスペース文字の後にヌル文字を続けたものを表します。

C 文字列 '\\abcd'C は,文字列 '\abcd' にヌル文字を追加したものと等価です。文字列 ''C は ASCII のヌル文字を表します。