我有一个超过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, " "));
}
答案 0 :(得分:0)
您确定在致电SIGSEGV
时触发了fclose
吗?
看起来你很简单地传递NULL
指针作为strtol
函数的第一个参数(在代码的其他部分中)
另一种选择可能是堆栈完全搞砸了。
尝试使用gdb
运行它并在崩溃时使用命令where
查看堆栈