fflush() 未按预期工作

fflush() is not workign as expected

我目前正在做一个项目,我需要文件 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;
 }

我收到的是未知字符,而不是预期的 'T'。

我正在使用 C 风格的 io,因为我想避免 fstreams 的大小开销。

看起来文件指针指向文件末尾,所以 return 是 -1,因此你得到奇怪的 char。 在 fflush(); 之后(我认为不需要 ,至少对于您生成的示例而言)您可以使指针指向文件的开头,偏移量为 0:

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

这将 return 84 是字符 T

的正确 ASCII 码