HEX 78000000 0300497B ..............
中文件开头的数据等同于int32 120和char 03,然后加载其他char数据,
我的另一个程序写的数据,并以十六进制转储模式查看。
当我尝试用另一个程序读回来时,我试过了..
int j,padNumber;
char rot;
j=fscanf(fp,"%d%c",&padNumber,&rot); // insists on returning j=0,padNumber=0 & rot=0
,而
char c1,c2,c3,c4,rot;
j=fscanf(fp,"&c&c&c&c&c",&c1,%c2,&c3,&c4,&rot);// gives
j=5,c1='x',c2='\0',c3='\0',c4='\0',rot='!x03'
等同于我的文件数据。
为什么我不能以原生格式恢复我的int
答案 0 :(得分:3)
从本机二进制转储读取时使用fread
。
fread(&padNumber, sizeof padNumber, 1, fp);
fread(&rot, sizeof rot, 1, fp);
或者如果您使用的是Unix平台,直接read
系统调用也可以正常工作。
#include <unistd.h>
...
read(fd, &padNumber, sizeof padNumber);
read(fd, &rot, sizeof rot);