【发布时间】:2021-09-03 21:56:44
【问题描述】:
我试图让一个程序让用户输入一个单词或字符,存储它,然后打印它,直到用户再次输入它,退出程序。我的代码如下所示:
#include <stdio.h>
int main()
{
char input[40];
char check[40];
int i=0;
printf("Hello!\nPlease enter a word or character:\n");
gets(input); /* obsolete function: do not use!! */
printf("I will now repeat this until you type it back to me.\n");
while (check != input)
{
printf("%s\n", input);
gets(check); /* obsolete function: do not use!! */
}
printf("Good bye!");
return 0;
}
问题是我不断打印输入字符串,即使用户的输入(检查)与原始(输入)匹配。我是否错误地比较了两者?
【问题讨论】:
-
gets( )已从标准中删除。请改用fgets( )。 -
请注意,answer 到 Why does
strcmp()return zero when its inputs are equal 解释了如何比较字符串的相等、不相等、小于、大于、小于或等于以及大于或等于。并非所有字符串比较都是为了相等。区分大小写的比较再次不同;其他特殊比较(例如字典顺序)需要更专业的比较器,并且有用于更复杂比较的正则表达式。 -
还要注意,有一个基本重复的问题How do I check if a value matches a string 在此之前几年就被问过了。
-
这能回答你的问题吗? How do I check if a value matches a string
-
这个问题很好,但是使用
gets()是不行的。自 C11 起,它也已从标准中删除 -> 请阅读Why is the gets function so dangerous that it should not be used?