fclose
来自 cppreference.com
定义在头文件 <stdio.h> 中 |
||
int fclose( FILE *stream ); |
||
关闭给定的文件流。任何未写入的缓冲数据将被刷新到操作系统。任何未读取的缓冲数据将被丢弃。
无论操作是否成功,该流将不再与文件关联,并且由 setbuf 或 setvbuf 分配的缓冲区(如果有)也将被取消关联并释放,如果使用了自动分配。
如果在 fclose
返回后使用指针 stream
的值,则行为未定义。
内容 |
[编辑] 参数
stream | - | 要关闭的文件流 |
[编辑] 返回值
0 成功时,否则为 EOF
[编辑] 示例
运行此代码
#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