C言語Part2~printf関数とエスケープシーケンス~
まずは、前回の復習をしておきましょう。
まだ見てない方は前回のパート1から見てくださいね!
前回のまとめ
#include <stdio.h>
int main(void)
{
printf("Hello,World");
return 0;
}
を実行すると、
Hello,World
と出力されましたね。
なぜかというと、
4行目にprintf関数があるからでした。
printf関数は " " の中に書いてある文字や文章を出力するというものでした。
エスケープシーケンス(改行)
次にprintfで出力する文章を改行したり,特別な記号を出力する時に使用したりする、「エスケープシーケンス」というものを紹介したいと思います。
まずは具体例を見てみましょう。
#include <stdio.h>
int main(void)
{
printf("Hello,\nWorld");
return 0;
}
と書くと、出力したときに、
Hello,
World
と表示されます。
2行になっているのは、 \n があるからです。
\n とかくと改行することができます。
出力したときに「\n」は表示されません。
これをエスケープシーケンスといいます。
色々なエスケープシーケンス
改行のほかにもさまざまなエスケープシーケンスがあります。
プログラミングはわからないときは、色々試してみることが大事ですので、ぜひ自分でいろいろなエスケープシーケンスを使ってみてどういうものなのか確認してほしいところですが、ここでも、いくつか試してみましょう。
タブ「\t」
#include <stdio.h>
int main(void)
{
printf("Hello,\n\tWorld");
return 0;
}
「\n」は改行を表すものだったので、改行されます。
そのあとの「\t」はタブを表します。
パソコンのキーボードにもあるタブと同じです。
タブは空白を出力します。
空白の幅は、前の文字数に依存します。
分かりやすいようにもう一つ具体例を出します。
これが自分で色々試してほしいといった理由の1つです。
#include <stdio.h>
int main(void)
{
printf("a\t*\nab\t*\nabc\t*\nabcd\t*\nabcde\t*\nabcdef\t*\nabcdefg\t*\nabcdefgh\t*\nabcdefghi\t*\n");
return 0;
}
これを実行すると、下のようになります。
a *
ab *
abc *
abcd *
abcde *
abcdef *
abcdefg *
abcdefgh *
abcdefghi *
つまり「\t」は文頭の位置を揃える働きがあるのです。
また、今回のように様々なパターンで実験してみると、
何文字まで同じ位置で文頭をそろえることができるのかも知ることができました。上を見るとわかるように、abcdefgがMaxつまり、最大7文字までならば、可能ということがわかります。8文字以上だと次の文頭の位置になってしまうようですね。
バックスペース「\b」
#include <stdio.h>
int main(void)
{
printf("Hello,\nWorld\b");
return 0;
}
「\n」は改行を表します。
「\b」はバックスペースを表します。
バックスペースは1文字消すというものなので、
World の最後の d を消しています。
ただし、これも注意が必要です。
普段パソコンで使っているバックスペースキーは改行を戻すこともできます。
しかし、C言語の場合は改行を戻すことはできません。
実際にやってみましょう。
#include <stdio.h>
int main(void)
{
printf("Hello,\nWorld\b\b\b\b\b\b\b\b");
return 0;
}
これを実行すると、
Hello,
World の文字をすべて消すことはできましたが、Hello,のほうは1文字も消すことができませんでした。
Hello, と出力され、改行されてこのプログラムは終了しました。
もしパソコンと同じであったら、バックスペースキーを8回おしたことになるため、Hell となるはずですので、違うということが分かりますね!
問題1
printf関数とエスケープシーケンスの復習をしましょう。
printf関数を使って、画面に次のように表示するプログラムを作りなさい。
人参はいかがですか?
"値段は¥30です。"
※開発環境によっては「¥」が「\」と表示されます。
答えを見る前に自分の答えを書いてみましょう。
開発環境がある人は、実際に自分の考えたプログラムを実行してみましょう。
問題1答え
答え合わせをしてみましょう。
#include <stdio.h>
int main(void)
{
printf("人参はいかがですか\?\n\"値段は\\30です。\"");
return 0;
}
?は「\?」、”は「\”」、¥(\)は「\\」を使う。
改行は「\n」を使う。