提示用户输入时程序崩溃

时间:2017-04-27 15:44:19

标签: c

我创建了一个简单的小程序,它在到达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;
}

我的程序运行良好,没有错误,它只是崩溃......

3 个答案:

答案 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);