std::fclose
出自cppreference.com
| 在標頭 <cstdio> 定義
|
||
| |
||
關閉給定的文件流,並將來自 stream 緩衝區的未寫入數據寫入關聯的輸出設備。捨棄任何尚未讀取的緩衝數據。
無論操作是否成功,流都不再關聯到文件,且由 std::setbuf 或 std::setvbuf 分配的緩衝區(如果存在)也會被解除關聯,並且在使用自動分配時會被解分配。
|
如果有數據被寫入輸出設備,那麼從 |
(C++26 起) |
如果在 std::fclose 返回後使用 stream 的值,那麼行為未定義。
參數
| stream | - | 要關閉的文件流 |
返回值
成功時返回 0,否則返回 EOF。
示例
運行此代碼
#include <cstdio>
#include <cstdlib>
int main()
{
int is_ok = EXIT_FAILURE;
FILE* fp = std::fopen("/tmp/test.txt", "w+");
if (!fp)
{
std::perror("打开文件失败");
return is_ok;
}
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 错误");
else if (std::feof(fp))
{
std::puts("成功抵达文件末尾");
is_ok = EXIT_SUCCESS;
}
std::fclose(fp);
return is_ok;
}
輸出:
成功抵达文件末尾
參閱
| 打開文件 (函數) | |
| 以不同名稱打開既存流 (函數) | |
| 沖洗放置區緩衝區並關閉關聯的文件 ( std::basic_filebuf<CharT,Traits> 的公開成員函數)
| |
fclose 的 C 文檔
| |