機能 |
指定の書式に従って標準入力ストリームからデータを入力することを表す。 ※stdinを指定したfscanf関数と等価 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
定義 |
#include <stdio.h> int scanf ( const char * format, ... ); ※C99規格では以下の定義となる int scanf ( const char * restrict format, ... ); |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
引数 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
戻り値 |
代入された入力項目の個数を返す。 入力無しまたは入力誤りが発生した場合はEOFを返す。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
実装例 |
#include <stdio.h> int main(void) { int n; float f; char s1[100]; char s2[100]; int ret; /* 整数値を読み込み n に代入 */ ret = scanf("%d", &n); printf("ret=%d\n", ret); /* scanfの戻り値を出力 */ printf("n=%d\n", n); /* 入力値を出力 */ /* 最初に2桁の整数値を読み込んで n に代入 */ /* 次に残りの入力のうち浮動小数点値を f に代入 */ ret = scanf("%2d%f", &n, &f); printf("ret=%d\n", ret); /* scanfの戻り値を出力 */ printf("n=%d\n", n); /* 入力値を出力 */ printf("f=%f\n", f); /* 入力値を出力 */ /* 最初にa,b以外の文字列を読み捨て */ /* 次にa,bを含む文字列を s1 に代入 */ /* 次に残りの文字列を s2 に代入 */ ret = scanf("%*[^ab]%[ab]%s", s1, s2); printf("ret=%d\n", ret); /* scanfの戻り値を出力 */ printf("s1=%s\n", s1); /* 入力値を出力 */ printf("s2=%s\n", s2); /* 入力値を出力 */ return 0; } |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
実行結果 |
(123を入力) ret=1 n=123 (123.45を入力) ret=2 n=12 f=3.450000 (zzaabbccを入力) ret=2 s1=aabb s2=cc |
scanf()