Я новичок в c, и я не уверен, как сформулировать этот вопрос. Но, к примеру, используя этот код:Как избежать пользовательских входов от перехода, используя два scanf?
#include <stdio.h>
int main()
{
int x,y,z;
printf("Enter 2 numbers: ");
scanf("%d %d", &x, &y);
printf("Test: ");
scanf("%d",&z);
printf("x:%d y:%d z:%d\n",x,y,z);
return 0;
}
Если пользователь вводит "1 2 3", было бы установить х = 1, Y = 2 и г = 3. Мне было интересно, можете ли вы установить x = 1 и y = 2 и проигнорировать 3, тогда пользователь может ввести другое значение и не использовать 3, указанных ранее.
Вы можете сбросить ввод после первого сканированияf. [См. Здесь] (http://stackoverflow.com/questions/7898215/how-to-clear-input-buffer-in-c). –
Вы можете использовать ['fgets()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/fgets.html) (или POSIX ['getline()'] (http: //pubs.opengroup .org/onlinepubs/9699919799/functions/getline.html)), чтобы прочитать строку, а затем сканировать ее с помощью ['sscanf()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/sscanf.html) вместо 'scanf()'. Это часто лучший способ обработки данных; он позволяет лучше сообщать о ошибках и позволяет вам попробовать альтернативные способы сканирования данных, если первый формат не работает. –
Полностью согласен с @JonathanLeffler: вы должны использовать 'fgets()' для получения одной строки, а затем 'sscanf()' для ее тщательной обработки (проверка значений возврата из этих функций, конечно). –