C程序中的Seg错误
我有一个超过300行的程序,除了一个导致seg故障的fclose外,它可以100%工作。。。现在,我甚至不能让我的程序运行。gdb给了我这个错误,我真的不知道如何解释C程序中的Seg错误,c,debugging,gdb,C,Debugging,Gdb,我有一个超过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 whi
____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))
\uuuuuuuuuuuuuuuuuuuuuuuu内部(nptr=0x0,endptr=0x0,base=10,
分组=,loc=0x349c78d580)地址: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, " "));
}
readLinesFromFile(文件*fPtr,int*num1,int*num2,字符**strs,int行)
{
int i;
字符数据[50];
对于(i=0;i
您确定调用fclose
时触发了SIGSEGV
看起来您只需传递一个NULL
指针作为strtol
函数的第一个参数(在代码的其他部分)
另一个选择可能是一堆乱七八糟的东西
尝试使用
gdb
运行它,当它崩溃时,使用命令where
查看堆栈您是否正在运行Linux?如果是这样,请在valgrind下运行您的程序。您是否在启用优化的情况下编译?使用-O0
编译可能会获得更多信息输出。看起来您正在传递NULL指针作为strtol.u的第一个参数试图关闭错误的描述符您需要显示更多的代码。如果您调用它,则在strtol()
中它似乎会崩溃,这似乎是一个开始查找的好地方。