fscanf() — フォーマット済みデータの読み取り
フォーマット
#include <stdio.h>
int fscanf (FILE *stream, const char *format-string, argument-list);
言語レベル
ANSI
スレッド・セーフ
はい
ロケール依存
この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーおよび LC_NUMERIC カテゴリーの影響を受ける可能性があります。また、この振る舞いは、LOCALETYPE(*LOCALEUCS2) または LOCALETYPE(*LOCALEUTF) がコンパイル・コマンドに対して指定されている場合は、現行ロケールの LC_UNI_CTYPE カテゴリーの影響を受ける可能性もあります。詳細については、CCSID およびロケールの理解を参照してください。
説明
fscanf() 関数は、指定された stream の現在位置から、argument-list のエントリー (存在する場合) で指定されたロケーションにデータを読み取ります。argument-list の各エントリーは、format-string の型指定子に対応する型を持つ変数を指すポインターでなければなりません。
format-string は入力フィールドの解釈を制御し、scanf() 関数の format-string 引数と同じ形式と機能を持ちます。
戻り値
fscanf() 関数は正常に変換し、割り当てたフィールド数を戻します。 戻り値に、fscanf() 関数が読み取ったが割り当てなかったフィールドは含まれません。
変換の前に入力障害が起こった場合、戻り値は EOF です。成功した場合、戻り値は割り当てられた入力項目の数です。
例
次の例はファイル myfile をオープンして読み取り、ストリング、long 型整数値、文字、および浮動小数点値についてこのファイルを走査します。
#include <stdio.h>
#define MAX_LEN 80
int main(void)
{
FILE *stream;
long l;
float fp;
char s[MAX_LEN + 1];
char c;
stream = fopen("mylib/myfile", "r");
/* Put in various data. */
fscanf(stream, "%s", &s [0]);
fscanf(stream, "%ld", &l);
fscanf(stream, "%c", &c);
fscanf(stream, "%f", &fp);
printf("string = %s¥n", s);
printf("long double = %ld¥n", l);
printf("char = %c¥n", c);
printf("float = %f¥n", fp);
}
/*************** If myfile contains ************************
**************** abcdefghijklmnopqrstuvwxyz 343.2 ***********
********************** expected output is: *********************
string = abcdefghijklmnopqrstuvwxyz
long double = 343
char = .
float = 2.000000
*/