feof
| Types and objects | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
헤더 파일에 정의됨
<stdio.h>
|
||
|
int
feof
(
FILE
*
stream
)
;
|
||
주어진 파일 스트림의 끝에 도달했는지 확인합니다.
목차 |
매개변수
| stream | - | 확인할 파일 스트림 |
반환값
스트림의 끝에 도달한 경우 0이 아닌 값을 반환하고, 그렇지 않으면 0
참고 사항
이 함수는 가장 최근 I/O 작업에서 보고된 스트림 상태만 보고하며, 관련 데이터 소스를 검사하지 않습니다. 예를 들어, 가장 최근 I/O가 파일의 마지막 바이트를 반환한
fgetc
라면,
feof
는 0을 반환합니다. 다음
fgetc
는 실패하고 스트림 상태를
end-of-file
로 변경합니다. 그때서야
feof
가 0이 아닌 값을 반환합니다.
일반적인 사용에서 입력 스트림 처리는 오류 발생 시 중단됩니다;
feof
와
ferror
는 이후 다양한 오류 조건을 구분하는 데 사용됩니다.
예제
#include <stdio.h> #include <stdlib.h> int main(void) { const char* fname = "/tmp/unique_name.txt"; // or tmpnam(NULL); int is_ok = EXIT_FAILURE; FILE* fp = fopen(fname, "w+"); if (!fp) { perror("File opening failed"); return is_ok; } fputs("Hello, world!\n", fp); rewind(fp); int c; // note: int, not char, required to handle EOF while ((c = fgetc(fp)) != EOF) // standard C I/O file reading loop putchar(c); if (ferror(fp)) puts("I/O error when reading"); else if (feof(fp)) { puts("End of file is reached successfully"); is_ok = EXIT_SUCCESS; } fclose(fp); remove(fname); return is_ok; }
가능한 출력:
Hello, world! End of file is reached successfully