为了账号安全,请及时绑定邮箱和手机立即绑定

如何正确比较字符串?

如何正确比较字符串?

叮当猫咪 2019-05-23 11:06:22
如何正确比较字符串?我试图让一个程序让用户输入一个单词或字符,存储它,然后打印它直到用户再次键入它,退出程序。我的代码看起来像这样:#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)

这样做的原因是因为!=并且==只会比较这些字符串的基址。不是字符串本身的内容。


查看完整回答
反对 回复 2019-05-23
?
慕容森

TA贡献1853条经验 获得超18个赞

好的一些事情:gets不安全,应该更换,fgets(input, sizeof(input), stdin)以免你得到缓冲区溢出。

接下来,要比较字符串,必须使用strcmp,其中返回值为0表示两个字符串匹配。使用相等运算符(即。!=)比较两个字符串的地址,而不是它们中的个别字符串char

并且还要注意,虽然在这个例子中它不会引起问题,也可以fgets将换行符存储'\n'在缓冲区中; gets()才不是。如果您将用户输入与fgets()字符串文字进行比较,例如"abc"它永远不会匹配(除非缓冲区太小,以至于它'\n'不适合它)。

编辑:再次被超级快速的神秘主义者击败。


查看完整回答
反对 回复 2019-05-23
  • 3 回答
  • 0 关注
  • 1016 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信