標準入出力
スポンサーリンク
printf 関数
printf (プリントエフ) 関数は,書式付きでの文字列出力を行う関数です。
関数名 printf は,print formatted の略です。
int a = 2, b = 3;
printf("%d + %d = %d\n", a, b, a + b);
2 + 3 = 5
最初の第 1 引数には書式化文字列,第 2 引数以降は文字列に埋め込む値を渡します。
%d などの書式指定には,次のようなものが使えます。
指定 | 説明 |
---|---|
%d | 符号付き整数 |
%u | 符号なし整数 |
%o | 符号付き整数 (8 進表示) |
%x, %X | 符号付き整数 (16 進表示) |
%f, %F | 浮動小数点数 (小数形式) |
%e, %E | 浮動小数点数 (指数形式) |
%c | 文字 |
%s | 文字列 |
%% | % そのもの |
int n = 123;
double d = 0.0123;
printf("%d\n", n);
printf("%X\n", n);
printf("%f\n", d);
printf("%e\n", d);
123
7B
0.012300
1.230000e-02
次のような,応用的な書式指定も使えます。
指定 | 説明 | 例 |
---|---|---|
%幅d など | 最小の表示幅を指定する | printf("%4d", 2) → ___2 |
%0幅d など | 余白を 0 で埋める | printf("%04d", 2) → 0002 |
%.精度f など | 精度を指定する | printf("%.2f", 3.141592) → 3.14 |
printf("%4d\n", 2);
printf("%04d\n", 2);
printf("%.2f\n", 3.141592);
printf("%.*f\n", 2, 3.141592);
2
0002
3.14
3.14
scanf 関数
scanf (スキャンエフ) 関数は,printf 関数の入力版です。
次のプログラムは,scanf 関数を使って整数の入力を受け付ける例です。
int a, b;
printf("整数を 2 つ入力: ");
scanf("%d %d", &a, &b); /* 入力された整数を a, b に代入 */
printf("%d + %d = %d\n", a, b, a + b);
整数を 2 つ入力: 2 3
2 + 3 = 5
第 1 引数には書式化文字列,第 2 引数以降には値を格納する変数を渡します。
値を格納する変数は,それぞれ頭に & を付けて書きます (文字列型以外)。
なぜ & が必要かを理解するには,ポインタを理解する必要があります。
%d などの変換指定には,次のようなものを使います。
指定 | 対象の型 |
---|---|
%d | int |
%u | unsigned int |
%ld | long int |
%f | float |
%lf | double |
%c | char |
%s | 文字列 (char *) |
その他の入出力関数
その他の入出力関数として,次のようなものがあります。
説明 | 入力 | 出力 |
---|---|---|
1 文字 | int getchar(void) | putchar(ch) |
1 行 | gets(str) | puts(str) |
書式付き | scanf(fmt, ...) | printf(fmt, ...) |
getchar 関数の返り値は,入力された文字を表す int 型の値です。
int 型なのは,char 型で表せない値が返される可能性がためです (EOF など)。
スポンサーリンク