我正在编写一个函数,用于搜索2D字符数组以查找列表中的单词。我遇到分段错误,可能是由于我根据回溯设置了while循环,但我看不到是什么原因造成的。
以下是我认为该错误所在的函数的代码。注意:这只是水平搜索的一部分。
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
这就是回溯告诉我的。
div
答案 0 :(得分:0)
我修复了细分错误。我正在访问列表中的单词,而不是单词中的字母。
*(*(list+(listPos+i)))
需要
*(*(list+listPos)+i)