我有一个超过 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, " "));
}
最佳答案
您确定在调用 fclose
时会触发 SIGSEGV
吗?
看起来您只是简单地传递一个 NULL
指针作为 strtol
函数的第一个参数(在代码的其他部分)
另一个选择可能是堆栈完全困惑。
尝试使用gdb
运行它,当它崩溃时使用命令where
查看堆栈
关于c - C 程序中的 Seg 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14933904/