它的继续 小字典的哈希. 现在似乎散列工作了,但当我试图显示任何桶时,在显示单词后出现 "分割错误"。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
#include <string.h>
#include "hash.c"
#include "dictionary.h"
#define LENGTH 45
#define DICTIONARY "dictionaries/small"
int main(void)
{
char* dictionary = DICTIONARY;
FILE* fd = fopen(dictionary, "r");
char h[LENGTH];
while(true)
{
char* c = fgets(h,sizeof(h),fd);
if (c == NULL)
{
if ( feof (fd) != 0)
{
printf ("\nEOF\n");
break;
}
else
{
printf ("\nERROR\n");
break;
}
}
int hashedValue = hash(c);
//printf("%d\n", hashedValue);
insert(hashedValue, c);
}
node* ptr = first[6]; //trying to display any
while(!NULL)
{
printf("%s", ptr->name);
ptr = ptr->next;
}
fclose (fd);
}
替换
while(!NULL)
与
while ( ptr != NULL )
或
while ( ptr )
你要确保 ptr
不含 NULL
值,然后再继续。 while(!NULL)
评估为 while(1)
所以循环会 "永远 "重复(或者直到你尝试访问你不拥有的内存)。