C言語上級者を目指して!(その2・エスケープシーケンス)


文字列の中で、特別な役割を果たすエスケープシーケンス。

\n

なんかは、使い慣れているから間違うわけがないよね。
なんて思ってたら、WindowsとかMacとかLinuxとかで改行されたり改行されなかったりする。
今回は、エスケープシーケンスについて調べてみました。

\a 警報音を鳴らす
\b バックスペース
\n 復帰改行
\r 復帰
\f 改ページ
\t 水平タブ
\v 垂直タブ
\\ \という文字
\? ?という文字
\' 'という文字
\" "という文字
\0 Null
\000 8進数の文字コードを持つ文字
\x00 16進数の文字コードを持つ文字

それぞれチェックしていきます。

\a 警報音を鳴らす

CentOSでは、ぴちょんという感じの音がなりました。これが警報音とは思えないかも(笑)

\b バックスペース

カーソルを一文字分戻ります。”Hello\bWorld!”を表示すると、

HellWorld

になります。

\n 復帰改行
\r 復帰

これは、復帰改行と復帰と書いていますが、これがよくわからないところです。
WindowsとLinuxでは改行コードが違います。
Windowsは「CRLF」つまり「\r\n」ですが、Linuxは「LF」つまり「\n」です。
Linux上のC言語で文字列を書きだすプログラムを作成した後、Windowsで開くと文字列の改行がされないことになります。
結構、この辺はLinuxとWindowsを両方使ってると困るので、意識すると良いです。
CRLFとLFを変更してくれるプログラムもあるので、そういうので切り替えてもいいのですが。

\f 改ページ

ディスプレイ表示では何の変化もないですが、出力がプリンタの場合にページを変えてくれます。
普通に表示するだけなら、必要ありません。

\t 水平タブ
\v 垂直タブ

水平タブは、タブを入れて一つ右の区切りに送ります。
垂直タブは、一つ下の行に移ります。

\\ \という文字
\? ?という文字
\' 'という文字
\" "という文字
\0 Null

それぞれの文字なので、分かると思います。

\000 8進数の文字コードを持つ文字
\x00 16進数の文字コードを持つ文字

\000は、\123とか、\のあとに三ケタの8進数文字コードを入れることで文字が表現できます。
\x00は、\xABとか、\xのあとに二ケタの16進数文字コードを入れることで文字が表示できます。

ということで、エスケープシーケンスについて調べてみました。
自分で実際にプログラムを動かしてみると、効果がよくわかりますね。

改行は特に意識しないといけないですね。
Windowsなら\r\n、Linuxなら\nで出力するように工夫すればよいかな。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする