C言語でのファイル処理について
ファイルポインタの準備
FILE構造体を使用して、ファイルポインタ変数を用意する。
FILE *fp;ファイルを開く
fpにfopen( ... )関数でファイルを格納。
第一引数にはファイル名、第二引き数には、ファイルのアクセスモードを指定する。
"r": は読み取りモード。"w": は書き込みモード。"a": は追加モード。ファイルが存在しない場合、新たに作成する。
このコードでは、ファイルが存在しない(NULL)場合に、exit(EXIT_FAILURE)関数を使用する。
if((fp = fopen("data.txt","r")) == NULL){
printf("Exception -> failed to open file");
exit(EXIT_FAILURE);
}ファイルの読み込み処理
以下のコードではondoにfscanf( ... )関数を用いてファイル内の数値を代入している。
fscanf( ... )は第一引数にファイルポインタを入れる。
第二引数には、書式指定子を入れる。 例 : "%d"など
第三引数には、代入先変数のアドレスを入れる。
ファイルの終わりはEOFで表されるが、fscanf( ... )でその値が取得されたときに、whileを終了している。
while((fscanf(fp,"%d",&ondo)) != EOF){
chiten++;
printf("地点%dの温度:%d\n",chiten,ondo);
heikin += (float)ondo;
}ファイルのクローズ
fclose()関数がEOFを返した場合に、ファイルのクローズが失敗したと見なしてエラーメッセージを表示し、exit(EXIT_FAILURE)を使ってプログラムを終了する。
EOFは、C言語でファイル操作関数が失敗したことを示す特別な値。通常、fclose()関数は0を返すか、EOFを返す。正常にファイルを閉じた場合には0を返し、エラーが発生した場合にはEOFを返す。
if(fclose(fp) == EOF){
printf("Exception -> failed to close file");
exit(EXIT_FAILURE);
}