这里 mainopp() 是我的程序的主要菜单功能。
每次我输入除 1/2/3/4 以外的某个值时,它都会显示错误对话框,接受一个 ch 输入(由于 getch()),但不是返回并重新运行相同的函数,而是以某种方式跳过提到“cin>>c”的部分,而是进入无限循环,甚至输出不正确。它只显示菜单和错误对话框,对齐方式很奇怪。不断重复 clrscr()、菜单和语句。
我确保这是使用 delay() 函数跳过的行。我还尝试将 mainopp() 的调用放在 switch case 之外,但这也不起作用。
然后我尝试使用 char c 而不是 int c,并将 case 放在单引号 (') 中的 switch case 函数中,发现它可以按预期完美运行。然后我在 cin>>c 、 c=getch() 、 c=getche() 之间交替,发现它们都正常工作。
我得到的唯一问题是当我对 c 使用 int 数据类型而不是 char 时。谁能解释为什么我在使用 int 数据类型时会出错?
(我在上面的代码中提到了 agentinfo() 、 update() 和 credits() 的原型,并且可以按预期完美地工作。)
这是功能:
void mainopp()
{
int c;
cout<<endl<<endl<<endl<<"\t \t \t \tTHE AGENCY";
cout<<endl<<endl<<"\t \t \t 1.AGENT INFORMATION \n";
cout<<"\t \t \t 2.UPDATE RECORDS \n";
cout<<"\t \t \t 3.CREDITS \n";
cout<<"\t \t \t 4.EXIT \n\n";
cout<<"\t \t \t Enter your choice: ";
cin>>c;
switch(c)
{ case 1 :agentinfo();
break;
case 2 :update();
break;
case 3 :credits();
break;
case 4 :exit(1);
default:cout<<"\t \t \tWrong selection !! Enter Again";
getch();
clrscr();
mainopp();
}
}