0

我的代码有什么问题?我正在尝试逐行读取文件并将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;
    }
4

1 回答 1

6

您忘记将 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);

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

于 2013-10-06T18:47:20.717 回答