Второй сканф не работает - PullRequest
       1

Второй сканф не работает

2 голосов
/ 26 октября 2010

У меня проблемы с этим кодом языка c:

 char st[2];

 printf("enter first value:");
 scanf("%c", &st[0]);

 printf("enter second value:");
 scanf("%c", &st[1]);

Таким образом, мой компьютер не просил меня ввести второе значение, я имею в виду, что он печатает только первый оператор printf, затем вводит символ, а затем только второй оператор printf и завершает программу без второго входа.

Пожалуйста, помогите. Что не так с этим кодом?

-Спасибо заранее.

Ответы [ 5 ]

8 голосов
/ 26 октября 2010

Ну, это так.Символ (ы), генерируемые клавишей ENTER, уже присутствуют в буфере.

3 голосов
/ 26 октября 2010

Вы получаете неявный символ новой строки, который вы ввели в качестве второго символа, т.е. st[1] получает значение '\n'. Простой способ исправить это - включить новую строку в строку ожидаемого формата: scanf("%c\n", &st[0]);

3 голосов
/ 26 октября 2010

Я думаю, что ваша проблема в том, что второй сканф получал нажатие клавиши "Enter".

2 голосов
/ 26 октября 2010

Замените

scanf("%c", &st[0]);

на это

scanf(" %c", &st[0]);

Это резкий ответ (без проверки ошибок или чего-либо еще), но быстрый и простой.

0 голосов
/ 14 августа 2017

используйте функцию fflush(stdin); перед вторым scanf();.Он будет очищать клавишу ВВОД, сгенерированную после первого scanf () ;.На самом деле, ваш второй scanf () принимает ENTER в качестве входа и, так как scanf завершает работу после получения ENTER, он больше ничего не принимает на вашей стороне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...