检查变量是否为特定值
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)
我想检查用户输入是否等于某个值
#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)