2017-05-08 6 views
-6

코드에서 사용자가 1 또는 2 또는 3을 입력하면 getch가 실행되고 그 후에 프로그램이 전환됩니다 ....하지만 문제가 있습니다. 스위치를 원하는대로 적용한 후에 을 입력하십시오. 사용자가 아무 키나 누르면 프로그램이 처음으로 돌아갑니다. 당신은 당신은 while 루프 스위치의 경우 포장 수 간단한 방법으로1 또는 2 또는 3을 제외한 아무 키나 누르는 경우 처음으로 되돌아 가려면 어떻게해야합니까?

#include <stdio.h> 
#include <unistd.h> 
#include <stdlib.h> 
#include <math.h> 
#include <conio.h> 

int main(void) { 
    char L; 

    while (1) { 
     L = getch(); 

     switch (L) { 
     case '1': 
      system("cls"); 
      printf("111111111111111"); 
      break; 
     case '2': 
      system("cls"); 
      printf("222222222222222"); 
      break; 
     case '3': 
      system("cls"); 
      printf("33333333"); 
      break; 
     default: 
      sleep(0); 
     } 
    } 

    return 0; 
} 
+1

들여 쓰기 .......................... – ThingyWotsit

+1

질문을 편집하고 코드를 들여 쓰기 바랍니다. – Lundin

+0

질문을 편집하고 코드를 들여 씁니다. 지금은 당신이 원하는 것을 이해하기가 어렵습니다! – 23ars

답변

1

사용 do - while(L != '1' && L != '2' && L != '3');while 루프 조건을 설정 :

do { 
    L = getch(); 
    switch (L) { 
    case '1' : 
     system("cls"); 
     printf("111111111111111"); 
     break; 
    case '2' : 
     system("cls"); 
     printf("222222222222222"); 
     break; 
    case '3' : 
     system("cls"); 
     printf("33333333"); 
     break; 
    default : 
     sleep(0); 
    } 
} while(L != '1' && L != '2' && L != '3'); 

위의 코드는 먼저 데이터에 대한 프롬프트를 평가하고 사용자가 '1', '2' 또는 '3'를 입력 할 때까지이 계속됩니다 . 코멘트 sleep(0)으로 default 사건을 언급 다음과 같은 설정


아무 소용이 없다지만, 예를 들어 개선 될 수있다 다음과 같이

do { 
    L = getch(); 
    switch (L) { 
    case '1' : 
     system("cls"); 
     printf("111111111111111"); 
     break; 
    case '2' : 
     system("cls"); 
     printf("222222222222222"); 
     break; 
    case '3' : 
     system("cls"); 
     printf("33333333"); 
     break; 
    default : 
     L = 0; 
    } 
} while(!L); 

이 예제에서는 (이 경우 L == 0를 사용하지 않는 가정) 허용 값을 재확인 할 필요가 없습니다.


질문의 제목이 다소 오도 된 것일 수 있으므로 나는 무엇을 성취하고자하는지 이해하지 못했을 것입니다. 그냥 다시 루프의 처음으로가는 일시 중단 할 경우 switch 블록 이후에 추가 getch()을 추가 할 수 있습니다

while (1) { 
    L = getch(); 

    switch (L) { 
    case '1': 
     system("cls"); 
     printf("111111111111111"); 
     break; 
    case '2': 
     system("cls"); 
     printf("222222222222222"); 
     break; 
    case '3': 
     system("cls"); 
     printf("33333333"); 
     break; 
    } 

    printf("Press Any Key to Continue..."); 
    getch(); 
} 

를이 여전히 당신이 그것을 개선하기 위해 내가 추천 귀하의 질문에 대답하지 않습니다.

+1

나는 downvote의 이유에 대해 궁금합니다. – Akira

+0

'sleep (0)'의 이유는 무엇입니까? (BTW 내가 upvoted). –

+0

@MichaelWalz 그냥 질문에서 복사하고 그것을 고려하지 않았다. – Akira

1

을 설명 할 경우 큰 수 있도록

C 언어는 여전히 나를 위해 새로운 기능입니다. 예 :

int done = 0; 
while(!done) { 
    L = getch(); 
    switch (L) { 
    case '1' : 
     system("cls"); 
     printf("111111111111111"); 
     done = 1; 
     break; 
    case '2' : 
     system("cls"); 
     printf("222222222222222"); 
     done = 1; 
     break; 
    case '3' : 
     system("cls"); 
     printf("33333333"); 
     done = 1; 
     break; 
    default : 
     sleep(0); 
    } 
} 
+1

왜 downvote? –

+0

그것은 작동하지 않습니다. 나는 어떤 경우에도 사용자가 아무 키나 누르면 프로그램이 처음으로 돌아가는 것을 원합니다. –

+0

@martenmarteny 사용자가 아무 키나 누르면 프로그램이 처음으로 돌아갈 때 질문을 제목으로 붙였습니다. * 1, 2, 3은 제외 **.하지만 훨씬 쉽고 다른 것을 원하는 것처럼 보입니다. 키 누르기가 끝난 후에 다시 돌아가고 싶다면 단지'while' 루프의 끝에'getch()'를 추가하기 만하면됩니다. – Akira