繁体   English   中英

fscanf和数字以本机int格式(不是文本)存储在文件中的问题

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

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