C语言 Printf 表示哈希



这是小字典哈希的延续。现在看起来散列正在工作,但是当我尝试显示任何存储桶时 - 显示单词后存在"分段错误"。

#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 ("nEOFn");
break;
}
else
{
printf ("nERRORn");
break;
}
}
int hashedValue = hash(c);
//printf("%dn", 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),因此循环"永远"重复(或直到您尝试访问您不拥有的内存(。

相关内容

  • 没有找到相关文章

最新更新