我创建了一个简单的小程序,它在到达if语句的部分之前就崩溃了。
#include <stdio.h>
int main()
{
char name[100];
printf("What is your name?");
scanf("%s", name);
printf("Hello, %s\n",name);
printf("You are trapped in a tunnel. Go through the right doors to get out\n");
int choice;
printf("Choose door 1 or door 2");
scanf("%d", choice);
if (choice == 1){
printf("This is the correct door");
}
else if (choice == 2){
printf("This is the wrong door");
}
else{
printf("Press 1 or 2");
}
return 0;
}
我的程序运行良好,没有错误,它只是崩溃......
答案 0 :(得分:2)
scanf("%d", &choice);
这就是它的意思。 choice
是一个独立的int
,因此您需要将其地址传递给scanf
才能获得正确的结果。您现在所做的是将choice
中存储的值传递给scanf
,同时它需要一个地址。
答案 1 :(得分:0)
C库函数
int scanf(const char *format, ...)
读取 来自stdin的格式化输入。
所以它应该是这样的:
int choice;
printf("Choose door 1 or door 2");
scanf("%d", &choice); //& means the address-of
if (choice == 1){
printf("This is the correct door");
}
else if (choice == 2){
printf("This is the wrong door");
}
else{
printf("Press 1 or 2");
}
答案 2 :(得分:0)
您在&
声明中错过了scanf
,说明它无效的原因。
它应该是
scanf("%d",&choice);