본문 바로가기

Stupid Computer/2. C 언어

[C/C++] switch case문 10개 이상 만들기 !

만약 switch( input ) 할떄 input 을 int로 선언하여 숫자로 입력을 받으면 

10개고 100개고 ... int 가 허용하는 범위까지는 모두 메뉴로 만들수 있을거다. 

이런경우에는 정말 간편하겟지 ! 


하지만 이런 메뉴에서 문자를 입력하면 무한루프를 돈다.. 


따라서 이런 메뉴가 아닌 것들에 대한 예외처리를 해줘야하는 프로그램에서는  

char input ; 

이렇게 선언하여 메뉴를 만들려고 할텐데, 이런경우 char 는 1바이트라 

1번 메뉴와 10번, 11번 메뉴는 모두 1로 인식한다. 10번이후에 경우 1+ 0 으로 인식하여 

1번메뉴 선택한후, 0을 다시 입력하는 식으로 처리가 된다. ( 맞을걸 ? ) 


이번에 프로젝트 진행중 하위 메뉴 22개이상을 만들어야 했었는데 ... 

결국 하위메뉴로 들여보낸거 10개정도 ... ? 그래도 int로 선언도 못하고 예외처리도 해줘야 했어서 


결국엔 .. 어쩔수없이 

if, else if 로 일일이 선언해줬다. 

char input[2] 이런식으로 하고 ( 메뉴가 두자리수 내에서 가능해서 이렇게 선언) 

if( ! strcmp ( input, "1" ) )  이런식이면 된다. !이 들어가는 이유는 strcmp는 같으면 0을 리턴하기 때문 ! 

else if ( ! strcmp( input, "2" )) 이렇게 .. 쭈욱 나가면 될듯 ? 


더 좋은 방법이 있으면 알고싶다.. 

if else if else if 계속 쓰는거 정말 귀찮...