C言語入門ブログ

C言語を、本当に初歩から学んで、その内容を書いていきます。

出力の話(C言語におけるprintf関数、そして改行の話)

さて、これからプログラムの内容の説明を始めます。


この記事内でも全て、ideoneというサイトでプログラムを実行することとします。使い方が分からない方は、サイドバーにある『このブログの勉強法について』を先に読んでみて下さい。
また、プログラムは何で書くの?という質問があると思います(学校で習う場合も、学校や、もっと言うと先生ごとに違うかもしれません)。
僕はSublimeTextというテキストエディタを使っています。
ただ、もちろん、メモ帳やテキストエディットなど、文字が書けるソフトであればなんでもかまいません。
そこで迷うより、まず書いてみることが大切なので、分からない方はもともと入っている文書作成ソフトで書きましょう。
また、どこかで書いてからideoneにコピーするのではなく、ideoneのコードを書くところに直接書いていくのもよいと思います。

では早速、プログラミングの話をしていきましょう。
おそらくプログラミングの勉強(序盤)の流れで一番良いのは
1.プログラム(完成品)を読む

2.プログラムの内容を理解する

3.プログラムの一部を変更してみて、理解を確かめる&理解を深める

4.上の完成品を見ながら、それに近い練習問題を解いてみる
というものだと思います。このブログでは、上の流れで勉強していけるように書こうと思います。

コードの読み方について

前回まででお話していなかったことですが、これからコードを読んでいきます。
コードの読むときの鉄則ですが、
上から順に読んでいく
というのだけ覚えていて下されば結構です。
それでは、1つ目の話題にいきましょう。

出力について

ではさっそく、上の流れにしたがって、コードを見ていきましょう。
今日初めに読むコードは以下のコードです。

#include<stdio.h>
int main()
{
        printf("Hello!");
	return 0;
}

前の記事でも出たプログラムですね。

まず、復習も兼ねて、このコードをideone上で実行してみて下さい。入力の部分には何も入れなくて結構です。
結果として

Hello!

というのが表示されたハズです。
そう、つまりこれはそういうプログラムなのです。

さて、ではこのコードをよく見ていきましょう。

とは言っても、

#include<stdio.h>
int main()
{
        
	return 0;
}

の部分は、毎回書く、いわばテンプレートというか、そういうものだと思って無視して下さい(いつか説明します)。

つまり今回注目する部分はここです。

printf("Hello!");

ここで出てくる『printf』というのは、そのあとにある()内の文を表示する、という機能を持ちます。また、文は""で挟む、という決まりがあるので、基本的には、

printf(" ここに出したい文章   ");

という形になります。
また、C言語にいては、各命令の終わりには;(セミコロン)を付けます。これはよく忘れがちなので、注意して下さい。
例えば、上のコードを次のように変更してみるとどうなるでしょうか。

#include<stdio.h>
int main()
{
        printf("Good Bye!");
	return 0;
}

どうなるか予想してから、ideoneで実行してみて下さい。

これを実行すると、『Good Bye!』と表示されるハズです。ちなみに、ちゃんとGoodとBye!の間の空白も反映されていますね。

というわけで、初めての練習問題を出します。

☆練習問題1.『Good Bye!』の代わりに『Good Night!』と出力するプログラムを、上のコードの一部を変更して、書いて下さい。また、それをideone上で実行して、合っているかどうか確かめて下さい。

上のコードを、自分の文書作成ソフトにコピーアンドペーストして、それの一部を消したり、一部追加したりして解いて下さいね。
これはこのブログでの鉄則です。他人が書いたコードを改変しながら、勉強していきましょう。

また、練習問題の解答は、その記事の一番下に貼ることにします。

改行の出力について

では、さらに上のコードから色々な手を加えて、理解を深めていきましょう。
次に考えてみるのは、次のようなコードです。

#include<stdio.h>
int main()
{
        printf("Number1");
        printf("Number2");
	return 0;
}

これを実行したらどうなるでしょうか。予想してから、ideoneで実行してみて下さい。

実行すると、次のようになったハズです。

Number1Number2

どうでしょう、予想は当たりましたか?
次のようになると予想した方もいると思います。

Number1
Number2

しかしもちろん、このように改行して表示したい場合もあるハズです。
色んなものを出力するのに、改行なしでどんどん横に続いていったら読みにくいですもんね。

さて、改行する場合は、次のようなコードに変更すればOKです。

#include<stdio.h>
int main()
{
        printf("Number1\n");
        printf("Number2");
	return 0;
}

分かりにくいですが、どこを変更したか分かりますか?
変更したのは、

printf("Number1\n");

の部分ですね。
この

\n

というのが、改行を表します(改行文字を表します)。『\』は、バックスラッシュ、と呼びます。これは、出し方が分からない人も多いと思います。
例えば僕が今使っているMacなら、option(alt)キーを押しながら『¥』キーを押すことで出せます。
自分のでどうやって出すか分からない場合は、例えば『バックスラッシュ Windows』とかで調べてみて下さい。
また、出せなくても大丈夫です。上のコード内のバックスラッシュをコピーして、貼り付けて下さい(面倒ですが、確実です)。


この改行は便利そうですね。
では、次のように、2つ書いたら2回改行されるのでしょうか。
次のコードを実行してみましょう。

#include<stdio.h>
int main()
{
        printf("Number1\n\n");
        printf("Number2");
	return 0;
}

結果は次のようになります。

Number1

Number2

ちゃんと2回分の改行が行われていますね。

ちなみにこの『\n』は、""内のどこでも使うことが出来ます。
次のコードを実行してみて下さい。

#include<stdio.h>
int main()
{
        printf("Nu\nmber1\n");
        printf("Numb\ner2");
	return 0;
}

\nが色んなところに入ってきて読みにくいですね。
結果を予想してから実行してみましょう。

結果は、次のようになるハズです。

Nu
mber1
Numb
er2

ちゃんと実行できたでしょうか?


さて、ここで2つ目の練習問題です。

☆練習問題2.下のような文を(改行も再現して)出力するプログラムを書き、ideoneで実行して合っているか確かめて下さい。ただし、『printf』を1回しか使ってはいけません!!!

first
second
third


はい、今回の内容は以上です。
この下に、練習問題に対する解答例を書いておきます。
基本的にideoneで実行したら合っているかどうか自分で確かめられますが、興味のある方はご覧になって下さい。

また、間違い等を見つけられた方は、是非ともコメント等で教えて下さい。よろしくお願いします。

練習問題の解答例

練習問題1.

#include<stdio.h>
int main()
{
        printf("Good Night!");
	return 0;
}

練習問題2.

#include<stdio.h>
int main()
{
        printf("first\nsecond\nthird");
	return 0;
}