ferror

[機能]

  ストリーム上にエラーがあるか否かを調べます.エラーがない場合は 0,ある場合は 0 以外の値を返します.

[形式]
#include <stdio.h>

int ferror(FILE *stream)
	stream : FILE 構造体へのポインタ		
[使用例]

  1. ファイルに書き込んだデータを,ファイルの終端か否か,入力エラーがあるか無いかを調べながら読み込みます
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    	int count, total, i1;
    	long li[5], lo[5];
    	FILE *stream;
    /*
    		 データの設定
    */
    	for (i1 = 0; i1 < 5; i1++)
    		lo[i1] = i1 + 1;
    /*
    		 ファイルのオープン(出力)
    */
    	if((stream = fopen("data", "w")) == NULL)
    		exit(1);
    /*
    		 ファイルへのデータの出力とファイルのクローズ
    */
    	count = fwrite(lo, sizeof(long), 5, stream);
    	printf("%d 個のデータを出力しました\n", count);
    	fclose(stream);
    /*
    		 ファイルのオープン(入力)
    */
    	if((stream = fopen("data", "r")) == NULL)
    		exit(1);
    /*
    		 データの読込
    */
    	total = 0;
    	i1    = 0;
    	while (!feof(stream)) {
    		count = fread(&(li[i1]), sizeof(long), 1, stream);
    		if (ferror(stream)) {
    			perror("***入力エラー***");
    			exit(1);
    		}
    		total += count;
    		i1++;
    	}
    	printf("%d 個のデータを入力しました\n", total);
    	for (i1 = 0; i1 < 5; i1++)
    		printf("%ld ", li[i1]);
    	printf("\n");
    
    	return 0;
    }
    			
    (出力)
    5 個のデータを出力しました
    5 個のデータを入力しました
    1 2 3 4 5 			
[参照]

feof, fread, perror

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