這裏mainopp()是我程序的主菜單功能。在執行此功能時,我總是收到一個錯誤
每當我輸入一個值,而不是1/2/3/4它顯示錯誤對話框,採取一個ch輸入(由於getch()) ,但然後而不是返回並重新運行相同的功能,它會以某種方式跳過提到'cin >> c'的部分,而是進入一個無限循環,即使輸出不正確。它只是顯示奇怪的對齊菜單和錯誤對話框。保持重複clrscr(),菜單和語句。
我確保這是使用delay()函數跳過的行。 我也試過把mainopp()的調用放在switch case外面,那也沒用。
然後我使用char c而不是int c來進行實驗,並將case切換爲單引號('),並發現它可以按照預期完美工作。 然後,我在cin >> c,c = getch(),c = getche()之間交替,發現它一切正常。
我得到的唯一問題是當我使用int數據類型而不是char時。 任何人都可以請解釋爲什麼我得到一個錯誤,當我使用int數據類型?
(用於agentinfo(),更新()和信貸()的原型是在我的代碼如上所述,這和按預期正常工作。)
這是函數:
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();
}
}
夥計......你是遞歸調用mainopp()!我想你想要的是一段時間(1)循環;) – Michael