如何正确比较字符串?我试图让一个程序让用户输入一个单词或字符,存储它,然后打印它直到用户再次键入它,退出程序。我的代码看起来像这样:#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);
printf("I will now repeat this until you type it back to me.\n");
while (check != input)
{
printf("%s\n", input);
gets(check);
}
printf("Good bye!");
return 0;}问题是我不断打印输入字符串,即使用户输入(检查)与原始(输入)匹配。我比较错误吗?
3 回答
繁星coding
TA贡献1797条经验 获得超4个赞
您不能(有用)使用!=
或比较字符串==
,您需要使用strcmp
:
while (strcmp(check,input) != 0)
这样做的原因是因为!=
并且==
只会比较这些字符串的基址。不是字符串本身的内容。
慕容森
TA贡献1853条经验 获得超18个赞
好的一些事情:gets
不安全,应该更换,fgets(input, sizeof(input), stdin)
以免你得到缓冲区溢出。
接下来,要比较字符串,必须使用strcmp
,其中返回值为0表示两个字符串匹配。使用相等运算符(即。!=
)比较两个字符串的地址,而不是它们中的个别字符串char
。
并且还要注意,虽然在这个例子中它不会引起问题,也可以fgets
将换行符存储'\n'
在缓冲区中; gets()
才不是。如果您将用户输入与fgets()
字符串文字进行比较,例如"abc"
它永远不会匹配(除非缓冲区太小,以至于它'\n'
不适合它)。
编辑:再次被超级快速的神秘主义者击败。
- 3 回答
- 0 关注
- 1016 浏览
添加回答
举报
0/150
提交
取消