void addWord(char *word, bucket **bkt, int size)
{
bucket *node, *auxNode;
if(findWord(word, bkt[hash(word, size)]) == 1)
{
return;
}
node = (bucket*) malloc (sizeof(bucket));
node->data = (char*) malloc (strlen(word) * sizeof(char));
memset(node->data, 0, strlen(word));
sprintf(node->data, "%s", word);
if(*bkt == NULL)
{
node->next = NULL;
*bkt = node;
}
else
{
auxNode = (bucket*) malloc (sizeof(bucket));
auxNode = *bkt;
while(auxNode->next != NULL)
{
auxNode = auxNode->next;
}
node->next = NULL;
auxNode->next = node;
}
}
int main(int argc, char **argv)
{
............
bkt = (bucket**) malloc (*sizeHash * sizeof(bucket*));
for(i = 0 ; i < (*sizeHash) ; i++)
{
printf("%d\n", i);
bkt[i] = NULL;
}
.........
if(bkt[hash(pch, *sizeHash)] == NULL)
{
printf("NULL: %s -> %d\n",pch, hash(pch, *sizeHash));
bkt[hash(pch, *sizeHash)] = NULL;
}
addWord(pch, &bkt[hash(pch, *sizeHash)], *sizeHash);
いつも、それは、ノードsendがNULLであることを意味します。しかし、2回挿入した後、3回目に入りますが、addWordではNULLにならずに到着します(findWordの前にprintfを入れます)。なぜこのようなことが起こるのか分かりません。これはハッシュテーブルで、hash()はDan Bernsteinのdjb2です。誰かがNULLポインタがaddWord()で送られない理由を教えてもらえますか?ポインタNULLの問題
あなたは以前にいくつかの質問をしてきましたが、いつも答えを得ました。しかしあなたはそれらの答えのどれも(決して受け入れていない)(http://stackoverflow.com/faq#howtoask)。あなたはそうするべきです。それは答えが役に立ったことを丁寧に認識する方法です。 – ruakh