如何正确比较字符串?

如何正确比较字符串?

我试图让一个程序让用户输入一个单词或字符,存储它,然后打印它直到用户再次键入它,退出程序。我的代码看起来像这样:

#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;}

问题是我不断打印输入字符串,即使用户输入(检查)与原始(输入)匹配。我比较错误吗?

https://img3.mukewang.com/5ce60ebb0001f53e05150342.jpg

叮当猫咪
浏览 1017回答 3
3回答

繁星coding

您不能(有用)使用!=或比较字符串==,您需要使用strcmp:while&nbsp;(strcmp(check,input)&nbsp;!=&nbsp;0)这样做的原因是因为!=并且==只会比较这些字符串的基址。不是字符串本身的内容。

慕容森

好的一些事情:gets不安全,应该更换,fgets(input, sizeof(input), stdin)以免你得到缓冲区溢出。接下来,要比较字符串,必须使用strcmp,其中返回值为0表示两个字符串匹配。使用相等运算符(即。!=)比较两个字符串的地址,而不是它们中的个别字符串char。并且还要注意,虽然在这个例子中它不会引起问题,也可以fgets将换行符存储'\n'在缓冲区中;&nbsp;gets()才不是。如果您将用户输入与fgets()字符串文字进行比较,例如"abc"它永远不会匹配(除非缓冲区太小,以至于它'\n'不适合它)。编辑:再次被超级快速的神秘主义者击败。
打开App,查看更多内容
随时随地看视频慕课网APP