C程序中的段故障错误

时间:2013-02-18 10:16:25

标签: c debugging gdb

我有一个超过300行的程序100%工作,除了导致seg故障的fclose ...现在,我甚至无法让我的程序运行。 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, " "));
}

1 个答案:

答案 0 :(得分:0)

您确定在致电SIGSEGV时触发了fclose吗?

看起来你很简单地传递NULL指针作为strtol函数的第一个参数(在代码的其他部分中)

另一种选择可能是堆栈完全搞砸了。

尝试使用gdb运行它并在崩溃时使用命令where查看堆栈