我想从具有以下格式的文件中解析(可能会更改)t =之后的数字(例如19625):
3a 01 4b 46 7f ff 06 10 42 : crc=42 YES\n
3a 01 4b 46 7f ff 06 10 42 t=19625
int t;
fp=fopen("text","r");
fscanf(fp,"t=%d",&t);
fclose(fp);
printf("%d\n",t);
没有给出输出..有什么建议吗?
答案 0 :(得分:1)
像这样修改
int t;
char buff[32];
FILE *fp=fopen("text","r");
while(EOF!=fscanf(fp, "%s", buff)){
if(1==sscanf(buff, "t=%d",&t)){
break;
}
}
fclose(fp);
printf("%d\n",t);
答案 1 :(得分:0)
这里,正确的关键字是“十六进制”
请参阅How do I read hex numbers into an unsigned int in C
请参阅http://www.cplusplus.com/reference/cstdio/fscanf/
尝试
int readt[4];
fscanf(fp,"t=%x %x %x %x",&readt[0],&readt[1],&readt[2],&readt[3]);
t=((256*readt[0]+readt[1])*256+readt[2])*256+readt[3];
printf("t=%d\n",t);
再见,
弗朗西斯
答案 2 :(得分:0)
只要文件在t
之前不包含t=
,您就可以直接替换
fscanf(fp,"t=%d",&t);
与
fscanf(fp, "%*[^t]t=%d", &t);