[英]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.