fscanf

[機能]

  ストリームから書式化したデータを読み込みます.成功すれば,入力されたデータの数を返し,エラーが発生するかまたはファイルの終端に達すると EOF を返します.

[形式]
	#include <stdio.h>

	int fscanf(FILE *stream, const char *format [,argument list])
		stream   : FILE 構造体へのポインタ
		format   : フォーマット
		argument : 引数(変数のアドレス等のリスト)

	format は,
		1)空白文字(空白( '' ),タブ( '\t' ),または,改行( '\n' )):
			次に空白文字以外の文字が現れるまで入力データ中の空白文字を読
			み込みますが,格納は行いません.
		2)% 記号以外の非空白文字:
			一致する空白文字を読み込みますが,格納は行いません.
		3)% 記号に続くフォーマット指定:
			入力データ内の文字を読み込んで,指定された型に変換し,対応す
			る引数の示す位置に格納されます.
	の 3 つから構成されます.

	フォーマット指定は,常に % 記号で始まり,一般的には次のような形をして
	います.
		%[*][width][{h|l|ll|L}]type
	例えば,
		%10d
	は,10 桁以下の整数を入力するための指定です.

	type は必須の項目で,入力するデータが文字か,数値か等を決定します.
	以下に示すような種類があります.
		文字  引数の型                    想定する入力の型
		d     int へのポインタ            10 進整数
		o     int へのポインタ            8 進整数
		x     int へのポインタ            16 進整数
		i     int へのポインタ            8, 10, 16 進整数
		u     unsigned int へのポインタ   符号無し 10 進整数
		U     unsigned long へのポインタ  符号無し 10 進整数
		e,E,f float へのポインタ          浮動小数点値
		g,G
		c     char へのポインタ           1 個の文字
		s     文字配列へのポインタ        文字列

	* を指定すると,次のデータは指定された型のデータとして解釈されますが,
	引数には代入されません.

	width は,入力する最大文字数を指定します.

	h,l, ll,L は,以下のように,引数のサイズを規定します
		h     引数が short int であることを示します
		l     引数が,long int または double であることを示します
		ll    引数が,long long int であることを示します
		L     引数が,long double であることを示します
		
[使用例]

  1. ファイルに書き込まれた数字や文字を入力します
    #include <stdio.h>
    
    int main()
    {
    	double x;
    	int i;
    	char ch;
    	char str[81];
    	FILE *stream;
    
    	i = 12;
    	x = 10.23;
    /*
    		 ファイルへの出力
    */
    	stream = fopen("data", "w");
    
    	fprintf(stream, "%d %f\n", i, x);
    	fputc('h', stream);
    	fputc('\n', stream);
    	fputs("This is a test", stream);
    
    	fclose(stream);
    /*
    		 ファイルからの入力
    */
    	stream = fopen("data", "r");
    
    	fscanf(stream, "%d %lf %c %s", &i, &x, &ch, str);
    
    	printf("読み込まれたデータは\n");
    	printf("     %d %f %c %s\n", i, x, ch, str);
    
    	return 0;
    }
    			
    (出力)
    読み込まれたデータは
         12 10.230000 h This
    			
[参照]

printf, fprintf, scanf, sscanf

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引