gpt4 book ai didi

c++ - 我在执行此功能时不断出错

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:16:00 26 4
gpt4 key购买 nike

这里的 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() 的原型(prototype),并且可以完美地按预期工作。)

这是函数:


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();
}
}

最佳答案

你真的不能那样称呼你 main ......你会遇到递归错误。你应该试试这个:

void mainopp()
{
int c;
bool Valid = false;
while(!Valid)
{
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;
Valid = true;
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";
clrscr();
Valid = false;
}
}
}

这个例子会循环直到用户输入一个有效的选择。如果您想运行它直到用户选择退出,请添加另一个选择(另一种情况)并更改此选项中的 bool。对于无限循环,只需使用 while(1)

关于c++ - 我在执行此功能时不断出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33550875/

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