標準入出力

スポンサーリンク

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 などの変換指定には,次のようなものを使います。

指定対象の型
%dint
%uunsigned int
%ldlong int
%ffloat
%lfdouble
%cchar
%s文字列 (char *)

その他の入出力関数

その他の入出力関数として,次のようなものがあります。

説明入力出力
1 文字int getchar(void)putchar(ch)
1 行gets(str)puts(str)
書式付きscanf(fmt, ...)printf(fmt, ...)

getchar 関数の返り値は,入力された文字を表す int 型の値です。
int 型なのは,char 型で表せない値が返される可能性がためです (EOF など)。

スポンサーリンク