2017-05-08 59 views
-6

在下面的代碼中,用戶將輸入1或2或3,它將通過getch進行,之後程序將進入切換....但我有一個問題 應用任何情況下,我想要切換如果用戶按任意鍵,程序會恢復到開始狀態?如果用戶按下除1或2或3以外的任何按鍵,如何返回開頭?

C語言仍然是新的我,所以如果你在 簡單的方式解釋

#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迴路和設置狀況來while(L != '1' && L != '2' && L != '3');

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

「睡眠(0)」是什麼原因? (BTW我upvoted)。 –

+0

@MichaelWalz剛剛從問題中複製出來,並沒有考慮到它。 – Akira

1

你可以用while環包住開關情況下,將是巨大的。例如:

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

相關問題