[英]Problems with fscanf and numbers stored on file in native int format, not text
十六进制文件中文件开头的数据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'
等于我的档案资料。
为什么我无法以本机格式恢复整数
从本地二进制转储读取时,请使用fread
。
fread(&padNumber, sizeof padNumber, 1, fp);
fread(&rot, sizeof rot, 1, fp);
或者,如果您在Unix平台上,则直接read
syscall也可以工作。
#include <unistd.h>
...
read(fd, &padNumber, sizeof padNumber);
read(fd, &rot, sizeof rot);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.