我想检查用户输入是否等于某个值
#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?
谢谢
答案 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)