printf関数

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> を記述してヘッダーを読み込む必要があります。記述しないとエラーが発生します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です