ユーザがプログラムを終了したいかどうかを確認する関数yesを作成しようとしました。ユーザーが 'Y'または 'y'を入力すると、正常に終了し、無効な入力を入力すると正常終了しますが、ユーザーが 'N'または 'n'を入力するとメニューに戻りますが、入力は単にプログラムを終了します。私もdo whileループを試しましたが、同様の問題が発生しました。ここに私のコードは次のとおりです。これ以外の場合文終了プログラム
void GroceryInventorySystem(void) {
int menuSelection;
int exitSelection;
welcome();
printf("\n");
while (menuSelection != 0)
{
menuSelection = menu();
switch (menuSelection)
{
case 1:
printf("List Items under construction!\n");
pause();
break;
case 2:
printf("Search Items under construction!\n");
pause();
break;
case 3:
printf("Checkout Item under construction!\n");
pause();
break;
case 4:
printf("Stock Item under construction!\n");
pause();
break;
case 5:
printf("Add/Update Item under construction!\n");
pause();
break;
case 6:
printf("Delete Item under construction!\n");
pause();
break;
case 7:
printf("Search by name under construction!\n");
pause();
break;
default:
printf("Exit the program? (Y)es/(N)o: ");
exitSelection = yes();
break;
}
}
}
int yes(void) {
char YN;
begin:;
scanf("%c", &YN);
flushKeyboard();
if (YN == 'Y' || YN == 'y') {
}
else if (YN == 'N' || YN == 'n') {
menu();
}
else {
printf("Only (Y)es or (N)o are acceptable: ");
goto begin;
}
}
int menu(void) {
int option;
int firstSelection = 0;
int lastSelection = 7;
printf("\n1- List all items\n");
printf("2- Search by SKU\n");
printf("3- Checkout an item\n");
printf("4- Stock an item\n");
printf("5- Add new item or update item\n");
printf("6- Delete item\n");
printf("7- Search by name\n");
printf("0- Exit program\n");
printf("> ");
option = getIntLimited(firstSelection, lastSelection);
return option;
}
必要であれば、私は、コードの残りの部分を提供することができます。
あなたは 'yes()'から意味のある** return **を提供していません。例えば。 if(YN == 'Y' || YN == 'y')は0を返し、それからnoブロックの 'return menu();' –