C 无法找到并修复我的seg故障错误

C 无法找到并修复我的seg故障错误,c,segmentation-fault,C,Segmentation Fault,*程序接收信号SIGSEGV,分段故障。 concat nextstr中的0x000000000040073b=0x7fffffffee66, longstr=0x7fffffffe750,main处的i=0x0.c:24 24 printf%c->%c\n,nextstr[j],longtstr[*i]; gdb 最有可能的指针错误 这需要一个命令行参数来检查长度,但存在seg错误 我想错误在第33行 但是我不知道如何修复它导致崩溃的主要问题在for循环中: for(j = 1; j <

*程序接收信号SIGSEGV,分段故障。 concat nextstr中的0x000000000040073b=0x7fffffffee66, longstr=0x7fffffffe750,main处的i=0x0.c:24 24 printf%c->%c\n,nextstr[j],longtstr[*i]; gdb

最有可能的指针错误

这需要一个命令行参数来检查长度,但存在seg错误

我想错误在第33行
但是我不知道如何修复它

导致崩溃的主要问题在for循环中:

for(j = 1; j <= argc; j++){
    if(concat(argv[j], longstring, i)) return 1;
}
因为concat的第三个参数是int*,所以需要传递一个指向i的指针。而且,循环的次数太多了。如果argc为2,则程序名在argv[0]中,参数在argv[1]中。因此,将循环更改为:

for(j = 1; j < argc; j++) {
    if (concat(argv[j], longstring, &i))
        return 1;
}

人们更可能通过适当的代码缩进来寻求帮助。此外,您还穿插了代码注释。代码的尾随部分在代码块之外,这就是为什么它显示为黄色[如引用的文章中所示],这是由代码块之外的>开始的。大体上,您将i传递给concat。第一个i是一个int,而不是int*,第二个i被初始化为0,您正在传递一个null指针。所以带空指针的*i++会产生seg错误。我根本不懂c,我正在学习,所以你能用注释在代码中告诉我吗?我不必使用malloc为指针分配内存来保存图表,改变这一行ifconcatargv[j],longstring,&我返回1;大体上。&i将把i的地址传递给concat
for(j = 1; j < argc; j++) {
    if (concat(argv[j], longstring, &i))
        return 1;
}