1-4. エスケープシーケンスを使う『特殊文字を出力するには』
そもそもエスケープシーケンスとは何でしょう?
具体的には前にも出てきた \n のようなもです。
ちなみに \n は改行であることはご存知の通りです。
◆\n はEUCでは NL、JISでは CR+LF になります。◆
それでは \n 以外のエスケープシーケンスはどんなものがあるでしょう。
まずは \t からやってみましょう。
#include<stdio.h> /* C++コンパイラだと警告が出るかもしれないので void main() にするか int main() にしてメイン関数の最後に return 0; を追加してください。 */ main() { printf("C-Pro\t\tNo.000\n"); printf("C-Production\tNo.001\n"); /* int main() のときはこの行を return 0; に上書き */ }
結果どうなりましたか?
(実は \n 以外を使うのは自分も初めてだったりして…)
C-Pro No.001 C-Production No.001
と表示されていると思います。
Windows以外のOSでは少しズレて表示されたかもしれませんがとりあえず成功したことにしましょう。
つまり \t はタブです。これを使えば文字を揃えるのに役立ちます。
それでは次に \a を使ってみましょう!
#include<stdio.h> main() { printf("C-Production\aNo.001\n"); }
結果 C-Production と表示したところで一度『ピー』と音が鳴り、つづけてNo.001 が表示されたと思います。
\a は警告という意味で(alarm ?)パソコンによっては音でない場合もあるようです。
次に\rです。これは復帰の意味で(return ?)行頭にカーソルを移動します。
#include<stdio.h> main() { printf("C-Production \a\rNo.001 \n"); }
このプログラムを実行すると…
C-Production
と表示した後ブザーが鳴って(\a)、行頭に復帰し(\r)、No.001 を上書きします
結果、
No.001 ction
となったと思います。(一応VC++4.0で確認)
また、\aを使ったのは動きを確認しやすくするためです。(ブザーが鳴る間画面が止まるため)
次は\bです。これはバックスペース働きがあります。
#include<stdio.h> main() { printf("C-Production \b\a\b\a\b\a\b\a\b\a\b\n"); }
このプログラムを実行すると。C-production と表示した後ブザーを鳴らしながら、右から一文字分づつカーソルが左に移動します。
(字が消えないのには驚いた!)
それでは、最後に\0です。
これは説明しようとするとウンチク話になりますが…
詳しい説明は後ほどにして今回は動作の確認だけにしましょう。
#include<stdio.h> main() { printf("C-Production \0 No.001\n"); }
どうなりましたか?たぶんNo.001は出てこないと思います。
\0は文字列の終端記号として使われるので\0以降は出力されなくなったのです。
◇特殊文字を出力するには
『特殊文字を出力するには』の題の通り特殊文字を画面に出力しましょう。
…で、その特殊文字ってなんじゃい?
それでは、次のプログラムをコンパイルしてください。
#include<stdio.h> main() { printf(" C-Production "No.001" "); }
コンパイル実行:
samp.c
samp.c(5) : error C2146: 構文エラー : ‘)’ が、識別子 ‘No’ の前に必要です。
samp.c(5) : error C2059: 構文エラー : ‘)’
samp.obj – エラー 2、警告 0
はい、失敗しました…
つまり、ダブルクォーテーション(“)は文字列の両端に付ける記号なのでそのままでは出力できないのです。
この時はダブルクォーテーションの前に\記号をつけることで解決します。
#include<stdio.h> main() { printf(" C-Production \"No.001\" "); }
これで実行すると
C-Production “No.001”
と出力されます。
あと特殊文字には\があります。
これも、同じく頭に\をつけて\\としてやれば出力されます。
#include<stdio.h> main() { printf(" ノートパソコン \\200,000\n"); }
このプログラムを実行すると
ノートパソコン \200,000
と表示されます。
Printfの特殊記号はこのほかにもありますがエスケープシーケンスでは表示できないので次の機会に行なおうと思います。