std::fclose
来自cppreference.com
定义于头文件 <cstdio>
|
||
int fclose( std::FILE* stream ); |
||
关闭给定的文件流。冲入任何未写入的缓冲数据到 OS 。舍弃任何未读取的缓冲数据。
无论操作是否成功,流都不再关联到文件,且由 std::setbuf 或 std::setvbuf 分配的缓冲区若存在,则亦被解除关联,并且若使用自动分配则被解分配。
若在 fclose
返回后使用 stream
的值则行为未定义。
参数
stream | - | 要关闭的文件流 |
返回值
成功时为 0 ,否则为 EOF 。
示例
运行此代码
#include <cstdio> #include <cstdlib> int main() { FILE* fp = std::fopen("test.txt", "r"); if(!fp) { std::perror("File opening failed"); return EXIT_FAILURE; } int c; // 注意:是 int 而非 char ,要求处理 EOF while ((c = std::fgetc(fp)) != EOF) { // 标准 C I/O 文件读取循环 std::putchar(c); } if (std::ferror(fp)) std::puts("I/O error when reading"); else if (std::feof(fp)) std::puts("End of file reached successfully"); std::fclose(fp); }
参阅
打开文件 (函数) | |
以不同名称打开既存流 (函数) | |
冲入放置区缓冲区并关闭关联的文件 ( std::basic_filebuf<CharT,Traits> 的公开成员函数) |