다른 메뉴를 파생시키는 메뉴를 표시해야하며 다른 메뉴가 파생됩니다. 는하지만 난이 양식과 그 메뉴를 검증하고 있습니다 : (만 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
(더 이상 반복하지 않음) 을 의미하며 값이 1 인 이전
validOption
과 일치합니다 (사례에서 합쳐 졌기 때문에) . 그래서 방해하지 않을 것입니다.
파생 된 메뉴에서 동일한 변수 (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
괜찮습니다. 나는 당신이 어쨌든 물어보고 싶은 것을 쉽게 이해했다 ;-) –