2017-01-03 4 views
-1

Я планирую функцию, которая принимает вход пользователя (4 целых числа) и проверяет, больше ли 1 целое число, чем 1, и меньше 6, я хотел что-то простое и думал, что если функция 'getche() '(Я хочу использовать эту конкретную функцию, потому что я не хочу, чтобы пользователь вводил ключ «вводить» после ввода ввода) мог получить четыре целых числа в одном коде.Возможно ли собрать несколько входов в одну функцию getche()?

Я хочу, чтобы избежать этого (если это возможно):

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

И я думаю, если что-то подобное можно:

int num = 0; 
num = getche(4) 

Спасибо.

+0

Просто попробуйте. Вернитесь, когда вы что-то пробовали и имеете конкретную проблему. И если вы сомневаетесь, прочитайте страницу man/reference для этой функции. Он точно скажет, какие параметры он принимает и что означают параметры (подсказка: 'getche' не принимает никаких параметров). – kaylum

+0

Вам нужно включить [mcve], показывающий, что вы уже пробовали ... но это не так, как работает 'getche()'. –

+0

Не можете ли вы использовать [scanf] (https://www.tutorialspoint.com/c_standard_library/c_function_scanf.htm)? [Пример здесь] (http://stackoverflow.com/a/1412524/5601284) – byxor

ответ

0

использование сделай/время цикла, чтобы получить цифры приема только от 1 до 6. А пока петля для конкатенации четыре цифры в целое число.

#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-элементный массив bool. После каждого getch() проверьте, нормально ли параметр чтения. Если все в порядке, заполните соответствующий id вашего массива «true», иначе «false». – MJey

+0

Мне не разрешено создавать какие-либо массивы – Ma250

Смежные вопросы