我的if语句的作用与我想要的相反-C中的链接列表

问题描述 投票:-1回答:1

我有一个程序要求用户输入一个单词,然后他们输入的每个单词都会添加到链接列表中。当用户输入"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

任何帮助将不胜感激。

c if-statement while-loop linked-list strcmp
1个回答
0
投票

将两个字符串相同时,[if条件更改为-> "END",因为if (strcmp(input, "END") != 0)返回strcmp并在第一个while循环之外取出内部0循环。


0
投票

if语句中的条件

while

表示存储在数组if (strcmp(input, "END") == 0) 中的字符串等于字符串文字input。因此,如果数组包含字符串"END",则要在列表中插入一个新节点。

此外,必须在此检查之后而不是在此之前为新节点分配内存。否则会发生内存泄漏。

请注意您有无限循环。

© www.soinside.com 2019 - 2024. All rights reserved.