函数中有goto语句的Switch保持无限运行



这是相关的代码,我正试图编写一个函数来选择帐户类型,当我运行它时,它一直在一个奇怪的循环中运行。有什么解决方案吗?

void AccType(){
wrongInput:;
int typCho;
printf("What type of account do you want to open?nPress 1 for Currentn2 for savingsn3 for retirement:n");
scanf("%d",typCho);
switch (typCho) {
case 1:
strcpy(PracRec.AccTyp,"Current");
break;
case 2:
strcpy(PracRec.AccTyp,"Savings");
break;
case 3:
strcpy(PracRec.AccTyp,"Retirement");
break;
default:
printf("Please enter a valid choice!!n");
goto wrongInput;
}
}

scanf的第二个参数需要是指向整数的指针(内存地址(。。。

因此,更换线路:

scanf("%d",typCho);

带有:

scanf("%d", &typCho);

&是一个运算符,它返回右边操作数的内存地址。

这是必要的,因为scanf将改变与变量相关的内存地址内的值。

当您只将typCho作为参数时,可能会使程序在随机内存位置写入输入,因为变量也未初始化。

此外,请考虑避免使用goto,如前面的评论中所指出的。

你可以很容易地用这样的结构做同样的事情:

do { ...code... } while (condition);

最新更新