我似乎在strcmp函数的某处出现了分段错误.我还是C的新手,我不明白为什么它会给我错误.
int linear_probe(htable h, char *item, int k){
int p;
int step = 1;
do {
p = (k + step++) % h->capacity;
}while(h->keys[p] != NULL && strcmp(h->keys[p], item) != 0);
return p;
}
Run Code Online (Sandbox Code Playgroud)
GDB:
Program received signal SIGSEGV, Segmentation fault.
0x0000003a8e331856 in __strcmp_ssse3 () from /lib64/libc.so.6
(gdb) frame 1
#1 0x0000000000400ea6 in linear_probe (h=0x603010, item=0x7fffffffde00 "ksjojf", k=-1122175319) at htable.c:52
Run Code Online (Sandbox Code Playgroud)
编辑:插入代码和htable结构
int htable_insert(htable h, char *item){
unsigned int k = htable_word_to_int(item);
int p = k % h->capacity;
if(NULL …Run Code Online (Sandbox Code Playgroud)