如果声明不工作立即结束程序
我正在制作一个天气男人代码但是当我要求温度时它会结束程序。 这是代码。
#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中比较字符串。 使用内置库函数或编写自己的函数进行字符串比较/