我遇到一个小C程序的问题。它输出一个问题(见下面的代码),我可以将输入放入(y和n),但之后没有其他任何事情发生,即使它是根据输入的输入(y或n)打印某些东西。但是,在我的问题之后没有输出任何内容,程序就会退出。这是代码:
#include <stdio.h>
int main()
{
char string [80];
static char y;
static char n;
printf( "ARE YOU SHAQIRI? [y/n]: " );
scanf( "%s", string );
if ("%s" == "y")
printf("That's impossible. YOU CANNOT BE SHAQIRI YOU IDIOT");
else if ("%s" == "n")
printf("I thought not.");
fflush ( stdin );
return 0;
}
答案 0 :(得分:6)
您的比较中有两个问题:if ("%s" == "y")
:
"%s"
是您的scanf
格式字符串。如果scanf
成功阅读输入,则结果位于您的变量中:string
。==
来比较字符串。您应该使用strcmp
。因为您在两个if
测试中都使用了这种形式的比较,所以两个分支都没有执行,并且您看不到输出。
另请勿在{{1}}上致电fflush
。您可能打算stdin
在那里。
答案 1 :(得分:0)
这不是你在C中比较字符串的方式,你需要使用strcmp
。此外,您需要比较变量string
,而不是"%s"
。
答案 2 :(得分:0)
scanf()
将返回的值存储在第二个参数中。见here。其次你正在纠正错误的字符串...使用strcmp
我只是把它扔到那里作为你的程序的简化:
以下是修改后的代码:
#include <stdio.h>
int main() {
char input;
printf( "ARE YOU SHAQIRI? [y/n]: " );
input = getchar();
if (input == 'y')
printf("That's impossible. YOU CANNOT BE SHAQIRI YOU IDIOT");
else if (input == 'n')
printf("I thought not.");
else
printf("Not valid input...");
return 0;
}
答案 3 :(得分:0)
C没有用于比较字符数组的内置运算符,因此您调用strcmp
,如下所示:
if(strcmp(string, "yes") == )
{
/* User said yes */
}
确保#include <string.h>