C言語 - ファイル操作3

TOPプログラムの話>C言語

さて、次はファイルの読み込みです。
scanfでファイルを読み込んだ時はどうでしたか?
きっとこんな感じでしたでしょうね。


/////////////////////////////////////////
#include <stdio.h>

int main()
{
	int years;
	double akazi;
	char str[256];
	printf("years>");
	scanf("%d",&years);
	printf("akazi>");
	scanf("%lf",&akazi);
	printf("str>");
	scanf("%s",str);
	printf("years : %d\n",years);
	printf("akazi : %lf\n",akazi);
	printf("str : %s\n",str);
	return 0;
}
//////////////////////////////////////
//////実行結果//////////////////////
years>2003(入力)
akazi>-12.2(入力)
str>Densanbu(入力)
years : 2003
akazi : -12.200000
str : Densanbu
Press any key to continue
///////////////////////////////////

同じような方法でファイルから読み込むことができます。 そのための関数がfscanfです。 では早速サンプルソースを見てみましょう。


/////////サンプル2/////////////////////////
//////////file2.c//////////////////////////
#include <stdio.h>

#include <stdio.h>

int main()
{
	FILE *fp;/*ファイルポインタ*/
	int years;
	double akazi;
	char str[256];

	/*test.txtを読み込みモードで開く*/
	fp=fopen("test.txt","r");
	if(fp==NULL)
	{
		printf("ファイルが開けません。\n");
		return 0;
	}
	/*ファイルから読み込む*/
	fscanf(fp,"%d",&years);
	fscanf(fp,"%lf",&akazi);
	fscanf(fp,"%s",str);
	fclose(fp);/*ファイルを閉じる。*/

	/*表示する。*/
	printf("years : %d\n",years);
	printf("akazi : %lf\n",akazi);
	printf("str : %s\n",str);
	return 0;
}
/////test.txt(ソースと同フォルダに作っておく)/////

2004 -1.2
Densanbu

/////////////////////////////////////////////////

//////////////////実行結果////////////////////
years : 2004
akazi : -1.200000
str : Densanbu
Press any key to continue
////////////////////////////////////////////////

scanfのときとあまり変わりありませんね?
fscanfは第一引数にファイルポインタを指定すれば、あとはscanfと同じように使えます。
(fscanfごとに改行を含む空白文字まで、もしくは指定された変数の量まで読み込みます。)
あとは
読み込む前後にfopenでファイルを開く処理とfcloseでファイルを閉じてる処理があるだけです。
読み込みモードなのでfopenでは"r"を指定しています。

4ページへ
INDEX        
TOPプログラムの話>C言語