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