Мне нужно показать меню, которое выводит другое меню, и это выводит другое меню. Но я уверен, проверка этого меню с помощью этой формы: (Только C стандартная библиотека)Является ли это хорошей практикой для проверки меню?
do{
validOption = 1;
printf("Option #1\n");
printf("Option #2\n");
printf("Option #3\n");
scanf("%i",&option);
switch(option){
case 1: /* Do something */ break;
case 2: /* Do something */ break;
case 3: /* Do something */ break;
default: validOption = 0; printf("Invalid Option\n"); break;
}
}while(!validOption);
Но в то время вывести меню я не знаю, если использовать тот же option
переменные и validOption
флага. Я думаю, что это не проблема, так как полученаoption
переменные будут перезаписаны и мне не нужен предыдущее option
переменного, так что option
переменных используются для единственного цели, которая присоединится в конкретном случае. Теперь флаг validOption
тоже не является проблемой, так как при успешном случае это означает, что validOption = 1
(больше не будет итерации) , и он будет соответствовать предыдущим validOption
, которые имеют значение 1 (так как оно было объединено в корпус) , Так что не помешает.
Является хорошей практикой использовать те же переменные (option, validOption
) в пределах производных меню?
Также мне нужно проверить с помощью функции getint()
, что заставляет меня думать, что если даже необходимо проверить меню, видя это практичным способом.
#include<stdio.h>
int main(){
int option;
int validOption;
do{
printf("Option #1\n");
printf("Option #2\n");
printf("Option #3\n");
scanf("%i",&option);
switch(option){
case 1:
validOption = 1;
do{
printf("Option #1\n");
printf("Option #2\n");
printf("Option #3\n");
scanf("%i",&option);
switch(option){
case 1: validOption = 1; /* Another menu with the same option and validOption variables */ break;
case 2: validOption = 1; /* Do something */ break;
case 3: validOption = 1; /* Do something */ break;
default: validOption = 0; printf("Invalid Option\n"); break;
}
}while(!validOption);
break;
case 2: validOption = 1; /* Do something */ break;
case 3: validOption = 1; /* Do something */ break;
default: validOption = 0; printf("Invalid Option\n"); break;
}
}while(!validOption);
return 0;
}
//I've put validOption = 1; within all cases just for explaining purposes
:) Извините за мой английский, но да, это вызывает путаницу, я не был уверен в повторном использовании переменных ... так что спасибо. – nEAnnam
Все в порядке. Я легко понял, что вы хотели спросить в любом случае ;-) –