1

私は 300 行を超えるプログラムを持っていましたが、セグ フォールトを引き起こした fclose を除いて 100% 動作しました...今、プログラムをまったく実行することさえできません。gdb でこのエラーが表示されましたが、正直なところ、解釈方法がわかりません

    ____strtol_l_internal (nptr=0x0, endptr=0x0, base=10,
       group=<value optimized out>, loc=0x349c78d580) at ../stdlib/strtol_l.c:298
       298       while (ISSPACE (*s))

誰がこれが何を意味するのか教えてもらえますか?

 readLinesFromFile(FILE* fPtr, int* num1, int* num2, char** strs, int lines)
 {
  int i;

  char data[50];

for (i = 0; i < lines; i++){
    fgets(data, 50, fPtr);
    strcpy (*(strs + i), strtok(data, " "));
    *(num1 + i) = atoi(strtok(NULL, " "));
    *(num2 + i) = atoi(strtok(NULL, " "));
}
4

1 に答える 1

0

SIGSEGVを呼び出したときに がトリガーされますかfclose?

NULL関数の最初のパラメーターとしてポインターを渡すだけのようですstrtol(コードの他の部分で)

別のオプションは、スタックが完全に台無しになる可能性があります。

で実行してみてください。gdbクラッシュしたら、コマンドwhereを使用してスタックを表示します

于 2013-02-18T10:18:33.117 に答える