我正在尝试检查用户输入是否与程序中的变量匹配。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* subject1 = "math";
char input[10];
int main()
{
printf("Subject: ");
scanf("%s", input);
if(strcmp(input,subject1) == 0)
{
printf("cpi\n");
}
else if(strcmp(input,subject1) == 0)
{
printf("math\n");
}
return 0;
}
如果我输入字符串“ math”,则在输出中得到cpi
,而不是math
。为什么?
答案 0 :(得分:1)
if(strcmp(input,subject1) == 0)
当您输入数学运算符为true时为true,如果参数匹配则strcmp()返回0。所以你想要的是
if(strcmp(input,subject1) != 0)
答案 1 :(得分:0)
两个if条件在这里都成立。因此,当第一个“ if”条件得到满足并执行时,它不会检查“ else if”条件。仅在所有先前的“ if”条件为假时,才检查“ else if”条件并执行。
希望这会有所帮助。