Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C程序中的Seg错误_C_Debugging_Gdb - Fatal编程技术网

C程序中的Seg错误

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

我有一个超过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))
\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()
中它似乎会崩溃,这似乎是一个开始查找的好地方。