将3个整数写入文件并使用fprintf和fscanf恢复它们

时间:2014-11-17 13:07:02

标签: c

我使用以下对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个?

1 个答案:

答案 0 :(得分:1)

如果要编写二进制整数,则不应使用fprintf(),这是用于打印,即将内存数据转换为人类可读的形式。

你应该做一些fwrite() s,即:

const int two = 2;

fwrite(&two, sizeof two, 1, fid);

然后使用fread()从当前为二进制读取打开的文件中回读。另外,检查I / O调用的返回值。