如果声明不工作立即结束程序

我正在制作一个天气男人代码但是当我要求温度时它会结束程序。 这是代码。

#include  int main(void) { int a; int b; int c; int d; printf("What Is Your Name?\n"); scanf("%s",&b); printf("Hi %s\n", &b); sleep(1); printf("Im Your Own Weather Man\n"); sleep(1); printf("Isn't That Great!\n"); sleep(1); printf("Please Type A Number In\n"); sleep(1); scanf("%d",&a); //checking out the number you wrote if(a3) { printf(":(\n"); } if(a==3) { printf("Its Snowing!\n"); printf("%c\n",3); sleep(5); printf("Would you like to know the temprature?\n"); scanf("%s", &c); } if(c=='yes') printf("20F\n"); return 0; } 

我认为它弄乱了(c ==’是’)
我怎么能打印20 F?

[编辑]感谢您帮助我将新代码放在下面,随时可以随意使用它,但请给予我信任。

 #include  #include  #include  int main(void) { int a,b; char c[5]; char d[30]; printf("What Is Your Name?\n"); scanf("%s",d); printf("Hi %s\n", d); sleep(1); printf("Im Your Own Weather Man\n"); sleep(1); printf("Isn't That Great!\n"); sleep(1); printf("Please Type A Number In\n"); scanf("%d",&a); //checking out the number you wrote if(a3) { printf("Its A Cloudy Day"); printf(":(\n"); } if(a==3) { printf("Its Snowing!\n"); printf("%c\n",3); sleep(5); printf("Would you like to know the temprature?\n"); scanf("%s",c); } if(strcmp("yes", c) == 0) printf("20F\n"); return 0; } 

问题在于您使用以下行将字符串读入int:

 scanf("%s", &c); 

试试这个, %d显示输入是int类型。

 scanf("%d", &c); 

c被定义为int ,但您将其视为char*

您还应该使用strcmp而不是== 。 您无法将字符串与==运算符进行比较。

c的定义更改为: char c[128]或其他任意长度。 然后在执行scanf: scanf("%s", c);时删除&运算符scanf("%s", c); 最后,将if (c=='yes')更改为if (strcmp("yes", c) == 0)

  if(c=='yes') printf("20F\n"); 

你不能这样做'yes'因为'yes'是一个错误声明的字符常量 ,即使它是一个字符串文字,如"yes"你也无法直接在c中比较字符串。 使用内置库函数或编写自己的函数进行字符串比较/