2016-02-12 45 views
0

如何讓此循環重複,直到用戶輸入-2,-1,0或正數?C - 重複提示,直到有效的用戶輸入

int main(int argc, char argv[]) { 
    char n[3]; 
    char line[LINESIZE]; 
    fgets(line, sizeof(line), stdin); 
    sscanf(line, "%s", n); 
    do { 
     if (n == 0) { 
      printf("DISPLAYING ALL RECORDS.\n"); 
     append(); 
     } else if (n > 0) { 
      printf("MODIFYING RECORD %s", n); 
     } else if (n < 0) { 
      printf("APPENDING RECORD %s", n); 
     } else if (n == -2) { 
      printf("QUITTING."); 
     } else { 
      return 1; 
     } 
    } while (1); 

return 0; 
} 
+1

int n; char line [LINESIZE];do {fgets(line,sizeof(line),stdin); } while(sscanf(line,「%d」,n)!= 1 || n <-2);' –

回答

0

使用do/while循環:

do 
{ 
    // code to be looped (ask the input value) 
} while (n < -2) 

// here you can check the values as in your code 
+0

這不起作用,因爲它只是打印修改記錄。 –

+0

我認爲你的做(1)循環是錯誤的,它會導致一個永無止境的循環。如果你想不斷地輸入輸入並對它做出反應,把(1)循環放在整個身體周圍,然後在我的答案中添加while循環。 –

0

我沒有得到什麼,你到底要與你的代碼,但

while(n<(-2)) 
{ 
     // Your code 
     // again take n as an input 
} 

做應該做的任務要求你的問題。

+0

這不保留循環它只是打印修改記錄然後結束 –

+0

好吧,基本上你想要的是循環重複沒有采取任何輸入,除非用戶給出的值大於等於-2 –

0

您需要使用kbhit()getch()在循環運行時接受輸入。 kbhit函數在那一刻檢查是否存在擊鍵,並且getch函數用於檢索該擊鍵的數據,如果kbhit獲得擊鍵,則返回非零值,如果不是,則返回0 0

相關問題