从文件中进行十六进制转换

时间:2013-10-06 18:44:35

标签: c

我的代码出了什么问题?我试图逐行读取文件并将0x“十六进制数”形式的数字转换为整数。它只返回1行然后结束,我的输入是这样的

0x9C40

0x3B9AC9FF

0x754893gf

0x754893gf

0x754893gf

0x754893gf

  #include <stdio.h>
#include <stdlib.h>


 #include <stdio.h>

 #define MAXCHAR 1000
 int main() {
     FILE *fp;
    char str[MAXCHAR];
    char* filename = "C:\\test.txt";
    int number;

    fp = fopen(filename, "r");
   if (fp == NULL){
      printf("Could not open file %s",filename);
      return 1;
     }
   while (fgets(str, MAXCHAR, fp) != NULL)
       number = (int)strtol(str, NULL, 0);
    printf("%d\n", number);
   fclose(fp);
    return 0;
    }

1 个答案:

答案 0 :(得分:7)

你忘了用大括号括起while块:

while (fgets(str, MAXCHAR, fp) != NULL) {
    number = (int)strtol(str, NULL, 0);
    printf("%d\n", number);
}

您的代码等同于

while (fgets(str, MAXCHAR, fp) != NULL) {
    number = (int)strtol(str, NULL, 0);
}
printf("%d\n", number);

解释了为什么你只得到一行输出。