假设一个单词在字典中有多种含义。实际上,在我的字典中,一个节点有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]);
}