0

コードの何が問題になっていますか? ファイルから 1 行ずつ読み込み、0x"16 進数" の形式の数値を整数に変換しようとしています。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);

これは、出力が 1 行しか得られない理由を説明しています。

于 2013-10-06T18:47:20.717 に答える