C & LINUX

C / LINUX ferror(3) feof(3) clearerr(3)

Ocean_ 2022. 5. 1. 16:49

함수 기능

FILE 스트림 객체에 설정된 에러 플래그를 설정하거나 확인하는 라이브러리 함수

ferror

입출력 에러 발생 여부 확인

feof

eof가 리턴되는 이유가 에러인지 파일 끝인지를 구분

함수 원형

#include <stdio.h>
int ferror(FILE *fp);
int feof(FILE *fp);
void clearerr(FILE *fp);

ferror 리턴 값 : 에러가 없으면 0 에러발생하면 0이 아닌값

feof 리턴 값 : 조건이 참이면 0이 아닌값, 참이 아니면 0

함수 파라메터

fp

파일 포인터

함수 예제

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[]){
    FILE *fp;
    int character;

    if(argc!=2){
        fprintf(stderr,"usage:%s<filename>\n",argv[0]);
        exit(1);
    }

    if((fp=fopen(argv[1],"r"))==NULL){
        fprintf(stderr,"fopen error for %s\n",argv[1]);
        exit(1);
    }
    
    character = fgetc(fp);
    while(!feof(fp)){
        fputc(character,stdout);
        if(ferror(fp)){
            fprintf(stderr,"Error detected!!\n");
            clearerr(fp);
        }
        character=fgetc(fp);
    }
    fclose(fp);
    exit(0);
}

함수 결과

 

리눅스시스템 프로그래밍 - 홍지만 저

교재 내에 있는 예제를 바탕으로 작성한 글 입니다.