检查变量是否为特定值

Checking if variable is a certain value

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

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

问题是无论我写什么,我仍然打印出 "You failed"。如果用户在 if 语句中写为值,我怎样才能让它 returns 为真?

谢谢

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] = '[=13=]';

这不起作用,因为您正在将字符串与 ==:

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

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

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