繁体   English   中英

将3个整数写入文件,然后使用fprintf和fscanf将其还原

[英]Writing 3 integers to a file and restoring them back using fprintf and fscanf

我使用以下对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调用的返回值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM