Как считывать несколько переменных в языке C?
===============================================

 Здравствуйте!  

Я решаю сейчас задачи по программированию, обучаюсь. Мне попалась задача, в которой считываются 3 переменные: ширина, высота, глубина.  

Считываю я их так: 
```
data_input = scanf("%i %i %i", &width, &height, &depth);
```
  

Для меня загвоздка в том, что на вход может поступить как 3 переменные, так и 2. Может и 1 переменная только поступить. Как считывать в таком случае?  

  

Просто сейчас, если я ввожу только одну переменную, программа ожидает ввода дальше. 

 Я правильно понимаю, что пользователь вводит от 1 до 3 чисел в строке и ожидает, что программа эти числа обработает и выведет результат? Иными, словами, программа реагирует на клавишу enter?  

  

Можно читать символы по одному через getch(), пока не прочитаете '\n'. По пути нужно парсить числа. Если символ цифра - то умножйте текущее число на 10 и прибавляйте цифру (помните, что (int)'0' != 0. Но символы цифры, слава богу, идут подряд в алфавите). Если прочитали пробел - переходите к следующему числу. Или, чтобы обрабатывать всякие много пробелов, лишние символы и другие проблемы ввода - лучше прочитать сразу же всю строку через fgets() и потом в ней уже парсить числа. 

 Думай о юзере своей программы! Юзер - идиот! А ты ему загадки загадываешь, требуя ввести непонятно что.  

  

Во-первых, юзера надо предупредить о том, что сейчас от него ожидается ввод. Во-вторых, инициализировать области и если там нуль (ничего не ввели), выдавать ошибку и на повторный запрос  

```
int a = 0, b = 0, c = 0;

for(;;)
 {
   printf("Введите ширину, высоту и глубину: "); // printf - чтобы перевода строки не было
   scanf("%d %d %d", &a, &b, &c);

   if ((a) && (b) && (c)) // сокращенная форма записи if (a != 0) ...)
     break;
    else
       printf("Неверно, попробуйте еще раз\n");
}
```