Linuxゲリラ戦記

printf関数の読み方は、プリントエフかんすうです。

アイキャッチ

76.前回作ったC言語プログラムの解説

ナックス「今日は、前回C言語で作ったプログラムの解説です」

デビー君「はーい」

ナックス「前回は以下のようなプログラムを作りました。」

#include <stdio.h>

void main()
{
	printf("あなたご飯にする?");
	printf("お風呂にする?\n");
	printf("それとも、タ・ワ・シ?");
}

ナックス「まず、一番最初の#include <stdio.h>。include(インクルード)を日本語に訳すとなんていう意味ですか?デビー君」

デビー君「『インクルード』……まだ人間がこの世に誕生する前に存在したとされる巨人たちの王国の名前……」

ナックス「違います。『読み込む』という意味です。つまり#include <stdio.h>は『stdio.hの機能を読み込んで使います』という意味です。ちなみに、stdio.hは、C言語のプログラムで使用する基本的な機能です。つまり『C言語の基本的な機能を読み込んで使うよ』って言うことですね」

デビー君「なるほど。巨人たちの王国の名前じゃなかったんだ」

ナックス「次に、void main()。C言語はmain(){〜}で書かれたプログラムを実行します。main(){〜}のことをmain関数(メインかんすう)と言います」

デビー君「へー。voidは何?」

ナックス「void(ボイド)は、今解説するのはちょっと早いので、あとで解説します」

ナックス「printf()はprintf関数と言います。printf("文字列")みたいな使い方をして、文字列を出力(表示)します」

デビー君「ふむふむ」

ナックス「最後に『お風呂にする?\n』の最後に書いた\nという文字」

デビー君「はい」

ナックス「この『\n』は特殊文字の一つです。特殊文字は、特別な文字です」

デビー君「もしかして、攻撃力が二倍になるのかな?」

ナックス「違います。『\n』は『改行』の意味――つまり、次の行に表示を移動させる文字です」

デビー君「え?って言うことは、逆に言うと『\n』を書かないと次の行に文字が行かないの?」

ナックス「はい。行きません。『\nは次の行に文字を表示させるための処理』ということが分かったところで、プログラムの実行結果を改めて見てみましょう」

$ ./moji
あなたご飯にする?お風呂にする?
それともタ・ワ・シ? $ 

ナックス「まず、『あなたご飯にする?』の後に文字の表示が次の行にいっていませんね。なぜなら『あなたご飯にする?』の後に『\n』を書いていないからです」

デビー君「ほう!」

ナックス「次の、『お風呂にする?』の後に文字の表示が次の行にいっています。なぜなら『お風呂にする?』の後に『\n』を書いたからです」

デビー君「ほう!」

ナックス「最後、『それともタ・ワ・シ?』の後の文字の表示が次の行にいっていませんね。なぜなら『それともタ・ワ・シ?』の後に『\n』を書いていないからです」

デビー君「へー。最後の文字にも\nを書かないと、プログラム実行後の文字表示の開始位置が、改行されていない場所、つまりそれともタ・ワ・シ?のすぐ後に表示されるんだ……。だから前回、ちょっとデザインが崩れたように見えたんだね」

ナックス「そうです。どうですか?分かってみたら楽勝でしょ?」

デビー君「分かってみたら楽勝ですな!」

ナックス「解説だけだとつまらないと思うので、今回もちょっとだけプログラミングをしましょう。特殊文字は『\n』以外にも色々あります。今回は特殊文字の『\\』と『\a』を試しましょう」

ナックス「今回のプログラミングは、前回記述したコードを書き変えて行います。前回のC言語のコードを記述したソースファイルのファイル名はmoji.cだと思うので、moji.cファイルがある場所でvim moji.cとコマンドを打ってください。」

$ vim moji.c

ナックス「前回のコードが書かれたファイルが開いたと思います。iキーを押して挿入モードにしてから以下のように記述してください」

#include <stdio.h>

void main()
{
	printf("あなたご飯にする?\\");
	printf("お風呂にする?\a");
	printf("それとも、タ・ワ・シ?\n");
}

ナックス「printfの最後の部分にだけ、それぞれ特殊文字を記述しました」

ナックス「Escキーを押してコマンドモードにしたあと、:wqと入力してEnterキーを押すことで、保存とVimの終了を行います」

ナックス「次にコンパイルしてください」

$ gcc moji.c -o moji

ナックス「最後に実行です」

$ ./moji
あなたご飯にする?\お風呂にする?それともタ・ワ・シ?
$ 

ナックス「『\\』は『\』という文字を表示させるための特殊文字です。『特殊文字の使用に\を使うなら、そもそも\自体を表示したい場合はどうすれば良いんだ!?』という時に使うものです」

ナックス「『\a』は『ビープ音』という音を鳴らすための特殊文字です」

デビー君「え!?音がなるの!?」

ナックス「はい。音がなります。音量をゼロにしている方は、音が出るように音量を調節してプログラムを実行してみてください。また、使用しているLinuxディストリビューションによっては、デスクトップ環境の設定画面でビープ音を無効にしている場合がありますので、音量をONにしても音が鳴らないようであれば、使用しているデスクトップ環境の設定画面で『ビープ音の設定』もしくは『警告音の設定』というような設定の状態を確認してみてください」

ナックス「また、今回は改行の特殊文字『\n』を、最後の文字出力の後に記述しました。その結果、今回はデザインは崩れませんでしたね」

ナックス「オッケーですか?」

デビー君「オッケーですね」

ナックス「次回はLinuxのパスの話(77.C言語のコードの書き方の話)」

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