| Types and objects | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <stdio.h> | ||
int fclose(FILE* stream); | ||
Closes the given file stream. Any unwritten buffered data are flushed to the OS. Any unread buffered data are discarded.
Whether or not the operation succeeds, the stream is no longer associated with a file, and the buffer allocated bysetbuf orsetvbuf, if any, is also disassociated and deallocated if automatic allocation was used.
The behavior is undefined if the value of the pointerstream is used afterfclose returns.
Contents |
| stream | - | the file stream to close |
0 on success,EOF otherwise
#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
(C11) | opens a file (function)[edit] |
(C11) | open an existing stream with a different name (function)[edit] |
C++ documentation forfclose | |