C программирование, функция scanf () - PullRequest
0 голосов
/ 13 марта 2019

Scanf помещает пробелы в свой буфер или входной поток? Если я скажу

scanf("%c %d %d", &character, &num1, &num2);

А теперь скажите

scanf("%c", &char2);

Я знаю, что enter останется в буфере, но учитываются ли пробелы?

scanf("%c%d%d", &character, &num1, &num2);

Отличается ли это от первой части.

Еще одна вещь. Могу ли я как-то сломать scanf после того, как пользователь нажмет ввод? Если он нажимает, введите после num1 для ex. Ввод: я 5

Могу ли я каким-то образом сделать остановку scanf после этого, даже если он ожидает еще одного ввода?

1 Ответ

3 голосов
/ 14 марта 2019

Пробел в строке формата scanf будет занимать любой пробел (если есть);Спецификатор формата %d также будет игнорировать любые пробелы перед фактическим числом.Так что " %d" имеет тот же эффект, что и "%d".Спецификатор формата %c не будет игнорировать пробелы, но будет читать их, поэтому " %c" будет отличаться от "%c".В вашем случае, когда %c в начале строки формата scanf("%c %d %d", ...) имеет тот же эффект, что и scanf("%c%d%d", ...).

Если вы хотите разрешить выход до того, как все введено, я быпредложить прочитать всю «строку», используя fgets, а затем соответствующим образом проанализировать ввод, например, используя sscanf из strtok.

...