Scanf принимает несколько символов ввода - PullRequest
1 голос
/ 10 июня 2019
int main() {
 char a1, a2;
 printf("input values here: ");
 scanf(" %c%c ", &a1, &a2);
 printf("%c%c",a1,a2);
}

Я пытаюсь понять, как работает scanf, когда ему дают два символьных ввода одновременно.Например, после запуска в терминале с 14 я ожидал назначить 1 для a1 и 4 для a2, но это не сработало.Учитывая, что я должен разделить входной терминал, например, «a4», на два отдельных символа, как мне поступить?Любая идея будет принята с благодарностью.

./main
input values here: 14

Ответы [ 2 ]

4 голосов
/ 10 июня 2019

С scanf когда он видит пробел в строке формата, он будет читать (и отбрасывать / игнорировать) любое количество символов пробела.И чтобы это работало, функции scanf необходимо найти конец непробельных символов.

Проблема с завершающим пробелом, как у вас в строке формата scanf, заключается в том, чточтобы найти конец конечной последовательности пробелов, вы должны ввести хотя бы один дополнительный символ, не являющийся пробелами.

Простое решение вашей проблемы (как мне кажется, это) - сбросить пробел встрока формата scanf.

0 голосов
/ 10 июня 2019

На самом деле scanf требует ввода нажатия для получения окончательного значения, если вы хотите получить один символ, вы можете использовать функции типа sting, такие как getche(), getchar(), это поможет вам лучше решить вашу проблему.

...