C:避免在链表中使用垃圾值



假设一个单词在字典中有多种含义。实际上,在我的字典中,一个节点有5种含义。因此,当我查找单词时,程序会打印 2 个含义以及其他 3 个 100 个字符长的垃圾值。

如何避免它们被打印?

这是我的代码:

struct node{
    char word[20];
    char meaning[5][100];
    struct node *next;
};
void lookup(struct node *head, char *word)
{
  int found = 0, i;
  while(head != NULL)
  {
    if(strcmp(head->word, word) == 0)
    {
        found = 1;
        printf("nt%s", word);
        for(i = 0; i < 5; i++) printf("nt%s", head->meaning[i]);
        printf("n");
        break;
    }
    head = head->next;
  }
  if(found == 0) printf("nWord not found in the dictionary!!");
}

使用 calloc 分配节点元素或在 malloc 之后执行内存集,以便默认情况下节点的所有内存(或成员(都用 0 填充。

struct node *node_element = (struct node *) calloc(1, sizeof(struct node));

然后通过检查长度来打印含义,

for(i = 0; i < 5; i++) {
  if(strlen(head->meaning[i]) > 0)
    printf("nt%s", head->meaning[i]);
}

相关内容

  • 没有找到相关文章

最新更新