printf関数
なぜこの関数を先に理解し、しっかり習得する必要があるのでしょうか。これからC言語を学ぶ上で、この関数は頻繁に使用するからです。この関数はコンソールに内容を出力するためのものです。
1 printf関数
先ほどのサンプルコードでもこの関数を使用しました。
// printfを呼び出して文字列を出力、\nは改行を意味する
printf("hello, world\n");
Code language: Arduino (arduino)
printf() 標準出力ライブラリ関数
printf("内容") と記述すると文字列の引数を渡し、二重引用符内の文字をコンソールに出力します。
文の最後には必ずセミコロン ; を記述し、1つの文の終わりを示します。セミコロンを忘れるとコンパイルエラーが発生します。下記にエラーメッセージ例を記載します。
C:\cdemo>gcc hello.c -o hello.exe
hello.c: In function 'main':
hello.c:5:29: error: expected ';' before 'return'
printf("hello, world\n")
^
;
return 0;
~~~~~~Code language: PHP (php)
複数行のテキストを出力したい場合は、下記のように記述できます。
#include <stdio.h>
main()
{
printf("1行目の文字\n");
printf("2行目の文字\n");
}Code language: PHP (php)
2 文字列
英語の二重引用符 " " で囲まれた一連の文字のことを指します。例:"hello, world\n"
先ほどのサンプルでは、文字列をprintfの引数として渡し、そのままコンソールに出力していました。
文字列を途中で改行して分けて書くことはできません。下記コードは直接コンパイルエラーとなります。
// 誤った記述:文字列を2行に分割
printf("hello, world
");
Code language: Arduino (arduino)
コンパイル時のエラー出力例
C:\cdemo>gcc hello.c -o hello.exe
hello.c: In function 'main':
hello.c:6:11: warning: missing terminating " character
printf("hello, world
^
hello.c:6:11: error: missing terminating " character
printf("hello, world
^~~~~~~~~~~~~
hello.c:7:4: warning: missing terminating " character
");
^
hello.c:7:4: error: missing terminating " character
");
^~~
hello.c:8:5: error: expected expression before 'return'
return 0;
^~~~~~
hello.c:8:14: error: expected ';' before '}' token
return 0;
^
;
}Code language: PHP (php)
3 エスケープシーケンス \n 改行文字
\n はC言語専用の記号で、改行文字を表します。
printfは自動で改行しないため、手動で\nを追加しないとカーソルが次の行に移動しません。
\nを記述しない場合、すべて同じ行に表示されます。下記例を参照。
#include <stdio.h>
int main()
{
// \nなし:2つの文字が同じ行に連なって出力
printf("hello");
printf("world");
// \nあり:出力後自動で改行
printf("\nhello\n");
printf("world\n");
return 0;
}Code language: PHP (php)
C:\cdemo>gcc hello.c -o hello.exe
C:\cdemo>hello
helloworld
hello
world
C:\cdemo>Code language: CSS (css)
helloとworldが同一行にくっついて出力されているのが分かります。printfで出力後改行したい場合は必ず\nを追加してください。1つの\nはキーボードのEnterキーを1回押したのと同じ意味です。連続で\nを2つ記述すると2回改行され、文字列同士の間に空行が1行挿入されます。メモ帳でEnterを2回押す動作と同じです。
#include <stdio.h>
int main()
{
printf("one\n\n");
printf("two");
return 0;
}Code language: PHP (php)
実行結果
C:\cdemo>gcc hello.c -o hello.exe
C:\cdemo>hello
one
two
C:\cdemo>Code language: CSS (css)
複数回printfを実行し、複数の文字を1行に連結して出力することも可能です。
例を見てみましょう。
#include <stdio.h>
int main()
{
printf("hello, ");
printf("world");
printf("\n"); // 最後にまとめて改行
}Code language: PHP (php)

よくあるミス補足
#include <stdio.h>
上記の前置処理によるヘッダーファイル読み込み文の末尾にはセミコロン; を記述しません。
printf関数を使用するには#include <stdio.h> を記述してヘッダーを読み込む必要があります。記述しないとエラーが発生します。