ferror
ferror
파일 스트림에 오류가 발생했는지 확인할 때 써요. 읽기·쓰기 과정에서 입출력 오류가 있었는지 감지하는 데 쓰여요.
출처: cppreference
본문
문법 (Syntax)
int ferror ( FILE * stream );
설명 (Explanation)
주어진 스트림에 오류가 발생했는지 확인해요.
매개변수 (Parameters)
- stream — 확인할 파일 스트림
반환값 (Return value)
파일 스트림에 오류가 발생했으면 0이 아닌 값, 아니면 0을 반환해요.
예시 (Example)
UTF-8로 읽기를 시도했을 때 잘못된 바이트 열 때문에 오류 표시기가 세워지는 걸 보여줘요. \xff\xff는 유효한 UTF-8 시퀀스가 아니고, 그걸 읽으려는 fgetwc 호출이 실패하면서 ferror가 오류를 감지해요.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <wchar.h>
int main(void)
{
char* fname = tmpnam(NULL);
FILE* f = fopen(fname, "wb");
fputs("\xff\xff\n", f); // not a valid UTF-8 character sequence
fclose(f);
setlocale(LC_ALL, "en_US.utf8");
f = fopen(fname, "rb");
wint_t ch;
while ((ch=fgetwc(f)) != WEOF) // attempt to read as UTF-8 fails
printf("%#x ", ch);
if (feof(f))
puts("EOF indicator set");
if (ferror(f))
puts("Error indicator set");
}
가능한 출력 (Possible output):
Error indicator set
유효하지 않은 UTF-8을 읽으려다 실패해서 ferror가 오류를 잡아낸 걸 볼 수 있어요. 이 경우 feof는 세워지지 않아요.
참고 문헌 (References)
- C11 표준 (ISO/IEC 9899:2011): 7.21.10.3 The ferror function (p: 339)
- C99 표준 (ISO/IEC 9899:1999): 7.19.10.3 The ferror function (p: 305)
- C89/C90 표준 (ISO/IEC 9899:1990): 4.9.10.3 The ferror function
더 알아보기
- 파일 끝인지 확인하려면 feof을 보세요.
ferror과 짝을 이루는 함수예요. - 오류 상태를 지우려면 clearerr을 쓰세요.
- cppreference 원문에서
ferror의 자세한 내용을 확인할 수 있어요.