程序停止在switch语句C语言上工作

时间:2013-07-12 22:08:04

标签: c crash switch-statement

我正在为一个类(C LANGUAGE)编写一个程序,它将是一个APP商店的菜单。在程序的某个时刻,用户将没有足够的钱从菜单中购买任何东西,因此他需要在他的帐户中添加资金,这是我在下面那部分的功能定义。当我运行我的程序时,它编译并且一切正常,直到它到达下面的switch语句,然后程序崩溃但没有运行时错误,它说“它已经停止工作”。这在我之前从未发生过,我附上了错误信息的截图。请帮忙,谢谢。

void moneyChoice(double *depositPtr, double appCost)
{
int choice = 0;
printf("\n\nPlease credit your money by selection:\
           \n1 --   $15.00\
           \n2 --   $10.00\
           \n3 --   $5.00\
           \n4 --   $2.00\
           \n5 --   $1.00");
    printf("\nDeposit amount: ");
    scanf("%d", choice);

    switch (choice)
    {
    case 1:
        *depositPtr += 15.00;
        break;
    case 2:
        *depositPtr += 10.00;
        break;
    case 3:
        *depositPtr += 5.00;
        break;
    case 4:
        *depositPtr += 2.00;
        break;
    case 5:
        *depositPtr += 1.00;
        break;
    }

screenshot of program crashing}

1 个答案:

答案 0 :(得分:1)

请使用有效的scanf地址,例如& choice。

 scanf("%d", &choice);

这使用选项的地址来写入扫描值。当你写scanf(“%d”,选择);它只是得到零(选择的初始值)作为地址并导致未定义的行为。

Scanf需要一个地址,因为它正在改变函数内部的值。地址显示需要更改的位置(选择值的地址)。与更改depositPtr的指向数据的方式类似。