我有一个程序要求用户输入一个单词,然后他们输入的每个单词都会添加到链接列表中。当用户输入"END"
时,程序应列出所有节点。
[我的问题是,该程序仅将单词"END"
添加到列表中,并且当用户输入其他内容时,将触发else条件:打印出列表中的所有项目,但所有这些单词只是[ C0]。
"END"
[通过if语句检查条件#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct node {
char word[32];
struct node *next;
};
int main() {
struct node *head = NULL, *cur = NULL;
char input[32];
while(1) {
cur = malloc(sizeof(struct node));
printf("Enter words: ");
scanf("%s", input);
if (strcmp(input, "END") == 0) {
cur->next = head;
strcpy(cur->word, input);
head = cur;
} else {
struct node *iter = head;
while (iter != NULL) {
printf("Contents: %s\n", iter->word);
iter = iter->next;
}
}
}
}
是否仅使用户仅输入单词,无论用户输入了什么内容,例如== 1
。
任何帮助将不胜感激。
将两个字符串相同时,[if条件更改为-> "END"
,因为if (strcmp(input, "END") != 0)
返回strcmp
并在第一个while循环之外取出内部0
循环。
if语句中的条件
while
表示存储在数组if (strcmp(input, "END") == 0)
中的字符串等于字符串文字input
。因此,如果数组包含字符串"END"
,则要在列表中插入一个新节点。
此外,必须在此检查之后而不是在此之前为新节点分配内存。否则会发生内存泄漏。
请注意您有无限循环。