c-是什么原因导致了该函数中的分段错误



我正在编写一个函数,用于在2D字符数组中搜索列表中的单词。我遇到了一个分段错误,可能是因为我根据回溯设置了while循环,但我看不出是什么原因造成的。

这是我认为错误所在的函数的代码。注意:这只是水平搜索的部分。

void searchWord(int j, int k, int gridsize, char** arr, char** list, int listPos){
if(j+strlen(*(list+listPos)) <= gridsize){ //Horizontal
int i = 0;
while(i < strlen(*(list+listPos)) && *(*(arr+(j+i))+k) == *(*(list+(listPos+i)))){
i++;
}
if(i == strlen(*(list+listPos))){
while(i > 0 && *(*(arr+(j+i))+k) == *(*(list+(listPos+i)))){
tolower(*(*(arr+(j+i))+k));
i--;
}
for(i = 0; i < strlen(*(list+listPos)); i++)
printf("%c", *(*(list+listPos)+i));
}
}

这就是回溯告诉我的。

Program received signal SIGSEGV, Segmentation fault.
0x0000000008000fd2 in searchWord (j=0, k=0, gridsize=15, arr=0x8403260, list=0x84032e0, listPos=49)
at arraysearch.c:110
110                     while(i < strlen(*(list+listPos)) && *(*(arr+(j+i))+k) == *(*(list+(listPos+i)))){
(gdb) bt
#0  0x0000000008000fd2 in searchWord (j=0, k=0, gridsize=15, arr=0x8403260, list=0x84032e0, listPos=49)
at arraysearch.c:110
#1  0x0000000008000ed4 in searchPuzzle (arr=0x8403260, n=15, list=0x84032e0, listSize=50) at arraysearch.c:96
#2  0x0000000008000d70 in main (argc=2, argv=0x7ffffffee048) at arraysearch.c:68

我修复了分段故障。我正在访问列表中的单词,而不是单词中的字母。

*(*(list+(listPos+i)))

需要

*(*(list+listPos)+i)

相关内容

  • 没有找到相关文章

最新更新