我使用以下对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个?
答案 0 :(得分:1)
如果要编写二进制整数,则不应使用fprintf()
,这是用于打印,即将内存数据转换为人类可读的形式。
你应该做一些fwrite()
s,即:
const int two = 2;
fwrite(&two, sizeof two, 1, fid);
然后使用fread()
从当前为二进制读取打开的文件中回读。另外,检查I / O调用的返回值。