【发布时间】:2013-02-18 10:16:25
【问题描述】:
我有一个超过 300 行的程序,除了导致 seg 错误的 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, " "));
}
【问题讨论】:
-
你在运行 Linux 吗?如果是这种情况,请在 valgrind 下运行您的程序。
-
您是否在启用优化的情况下进行编译?通过使用
-O0编译,您可能会获得更多信息输出。 -
看起来您将 NULL 指针作为第一个参数传递给 strtol。
-
你试图关闭错误的描述符
-
您需要显示更多代码。它似乎在
strtol()崩溃了,如果你打电话给它似乎是一个开始寻找的好地方。