fflush() 没有按预期工作

fflush() is not workign as expected

本文关键字:工作 fflush      更新时间:2023-10-16

我目前正在处理一个需要文件 io 的项目。在这个项目中,我经常读取和写入文件。但问题是我无法从文件中读取任何内容。我尝试过使用 fflush((,但这似乎不起作用。我在下面有一些演示相同行为的示例代码。

#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
FILE* fp = fopen("file.txt", "w+");
fprintf(fp, "Test text");
fflush(fp);
char c = fgetc(fp);
fclose(fp);
cout << c << endl;
return 0;
}

而不是 c 像预期的那样是"T",我得到了一个未知字符。

我使用 C 样式 io,因为我想避免 fstream 的大小开销。

看起来指向文件的指针指向文件的末尾,因此返回为 -1,因此您得到的奇怪charfflush();之后(我相信不需要女巫,至少对于您生成的示例(,您可以将指针指向偏移量为 0 的文件开头:

//...
fflush(fp);
fseek(fp, 0, SEEK_SET);
char c = getc(fp);
//...

这将返回 84 女巫是字符的正确 ASCII 代码T