2017-01-03 49 views
-1

我打算一個函數,它接受用戶的輸入(4個整數),並檢查是否每個整數大於1且小於6,我想簡單的東西,並認爲,如果功能「getche() '(我想使用這個特殊的功能,因爲我不希望用戶在輸入後輸入'enter'鍵)可以在一個代碼中得到四個整數。是否有可能在一個getche()函數中收集多個輸入?

我想避免這種情況(如果可能):

int num1 = 0, num2 = 0, num3 = 0, num4 = 0; 
num1 = getche(); 
num2 = getche(); ... 

我在想,如果這樣的事情是可能的:

int num = 0; 
num = getche(4) 

感謝。

+0

試試吧。當你嘗試了某些東西並且遇到特定問題時,請回來。如果有疑問,請閱讀該函數的手冊頁/參考。它會告訴你它接受的參數以及參數的含義(提示:'getche'不帶任何參數)。 – kaylum

+0

你需要包含一個顯示你已經嘗試過的[mcve] ......但這並不是'getche()'工作的方式。 –

+0

難道你不能只使用[scanf](https://www.tutorialspoint.com/c_standard_library/c_function_scanf.htm)? [Example here](http://stackoverflow.com/a/1412524/5601284) – byxor

回答

0

使用一個do/while循環來獲取只接受1到6的數字。一個while循環將四個數字連接成一個整數。

#include <stdio.h> 
#include <stdlib.h> 
//#include <conio.h> 

int main(void) 
{ 
    int num = 0; 
    int digit = 0; 
    int each = 0; 

    printf("Type a four digit number using only 1 through 6\n"); 
    while (each < 4) { 
     do { 
      digit = getchar (); 
      //digit = getch ();//getch does not echo the typed character 
      if (digit == EOF) { 
       fprintf (stderr, "EOF\n"); 
       return 1; 
      } 
     } while (digit < '1' || digit > '6');//loop if character is NOT 1 to 6 
     //putch (digit);//echo the character 
     each++; 
     num *= 10; 
     num += digit - '0'; 
    } 
    printf("the number is %d\n", num); 

    return 0; 
} 
1

難道你不能只使用適當的條件和getch()函數的循環?它可能變得更容易。

int l = 0; 
while (l < 4) 
{ 
    x = getch(); 
    // your conditions 
} 
+0

我試過了,但是當我試圖檢查參數是否符合條件時變得更加混亂。 – Ma250

+1

然後製作一個4元素布爾數組。每次getch()後檢查read參數是否正常。如果沒有問題,請使用'true'填充陣列的相應ID,否則使用'false'填充。 – MJey

+0

雖然我不允許製作任何數組 – Ma250

相關問題