检查变量是否为特定值

时间:2015-02-11 15:28:10

标签: c visual-studio-2013

我想检查用户输入是否等于某个值

    #include <stdio.h>
#include <windows.h>

int main()
{
    SetConsoleOutputCP(1252);
    SetConsoleCP(1252);

    char meningen[100];



    printf("Hello \n");
    printf("I want you to write 'Simon Anderson'.\n");

    scanf(" %[^\n]s", meningen);
        if (meningen == "Simon Anderson")
        {
            printf("Congratilation. You have won the game.\n");
            printf("Have a good day");

        }
        else {
            printf("You failed.\n");

        }
    getchar();
    getchar();
    return 0;
}

问题是我写的任何东西我仍然打印出“你失败了”。如果用户在if语句中写入值,我该怎么做才能返回true?

谢谢

2 个答案:

答案 0 :(得分:1)

if (meningen == "Simon Anderson")

应该是

if (strcmp(meningen,"Simon Anderson") ==0)

我建议您使用

fgets(meningen,sizeof(meningen),stdin);

而不是scanf(),fgets()负责缓冲区溢出,并记下fgets()附带换行符。您需要删除换行符,如下所示。

size_t n = strlen(meningen);
if(n>0 && a[n-1] == '\n')
a[n-1] = '\0';

答案 1 :(得分:0)

这不起作用,因为您要将字符串与==进行比较:

scanf(" %[^\n]s", meningen);
if (meningen == "Simon Anderson")

这是比较 meningen数组的地址,而不是它包含的值。要检查数组的内容,您应该使用strcmp()函数:

scanf(" %[^\n]s", meningen);
if (strcmp(meningen, "Simon Anderson") == 0)