解析文件fscanf

时间:2013-12-09 21:43:55

标签: c file parsing scanf

我想从具有以下格式的文件中解析(可能会更改)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);

没有给出输出..有什么建议吗?

3 个答案:

答案 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);