我目前正在做一个项目,我需要文件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的大小开销。
发布于 2020-01-12 01:00:10
看起来文件指针指向文件的末尾,所以返回值是-1,因此得到了奇怪的char
。在fflush();
(我认为不需要它,至少对于您所生成的示例)之后,您可以使指针指向具有0偏移量的文件的乞讨:
//...
fflush(fp);
fseek(fp, 0, SEEK_SET);
char c = getc(fp);
//...
这将返回84,这是字符T
的正确ASCII码
https://stackoverflow.com/questions/59696500
复制相似问题