我使用以下对 fprintf
的调用将 3 个整数写入文件:
FILE* fid = fopen("c:\\a.bin", "wb");
a = fprintf(fid, "%d", 2);
b = fprintf(fid, "%d", 576);
c = fprintf(fid, "%d", 5);
fclose(fid);
然后我尝试使用以下调用读回 3 个整数:
int a, b, c;
a = b = c = 0;
FILE* fid = fopen("c:\\a.bin", "rb");
fscanf(fid, "%d%d%d", &a, &b, &c);
调用fscanf
后,a、b和c的值分别为25765、0和0。我怎样才能恢复我的号码?为什么对 fprintf
的调用只写入 5 个字节而不是 12 个字节?
最佳答案
如果你想写入二进制整数,你不应该使用fprintf()
,它用于打印,即将内存中的数据转换为人类可读的形式.
你应该只做一些fwrite()
,即:
const int two = 2;
fwrite(&two, sizeof two, 1, fid);
然后使用 fread()
从打开的二进制读取文件中读回。另外,检查 I/O 调用的返回值。
关于c - 将 3 个整数写入文件并使用 fprintf 和 fscanf 恢复它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26973411/