| Types and objects | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <stdio.h> | ||
int feof(FILE*stream); | ||
Checks if the end of the given file stream has been reached.
Contents |
| stream | - | the file stream to check |
nonzero value if the end of the stream has been reached, otherwise0
This function only reports the stream state as reported by the most recent I/O operation, it does not examine the associated data source. For example, if the most recent I/O was afgetc, which returned the last byte of a file,feof returns zero. The nextfgetc fails and changes the stream state toend-of-file. Only thenfeof returns non-zero.
In typical usage, input stream processing stops on any error;feof andferror are then used to distinguish between different error conditions.
#include <stdio.h>#include <stdlib.h> int main(void){constchar* 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 EOFwhile((c=fgetc(fp))!=EOF)// standard C I/O file reading loopputchar(c); if(ferror(fp))puts("I/O error when reading");elseif(feof(fp)){puts("End of file is reached successfully"); is_ok=EXIT_SUCCESS;} fclose(fp);remove(fname);return is_ok;}
Possible output:
Hello, world!End of file is reached successfully
| clears errors (function)[edit] | |
| displays a character string corresponding of the current error tostderr (function)[edit] | |
| checks for a file error (function)[edit] | |
C++ documentation forfeof | |