gpt4 book ai didi

c - 程序停止处理 switch 语句 C 语言

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:05 26 4
gpt4 key购买 nike

我正在为一个类(C 语言)编写程序,这将是一个 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

最佳答案

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

 scanf("%d", &choice);

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

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

关于c - 程序停止处理 switch 语句 C 语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17624777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com