While-loop игнорирует scanf во второй раз

#include  int main () { char loop='y'; while(loop != 'n') { printf("loop? "); scanf("%c", &loop); if(loop != 'y') { loop='n'; } } return 0; } 

Если я набираю «y», он перезапускает цикл while, но второй раз игнорирует scanf и завершает цикл после этого. Может ли кто-нибудь помочь?

Убедитесь, что scanf отбрасывает новую строку. Измените его на:

 scanf(" %c", &loop); ^ 

Вам, вероятно, пришлось ввести новую строку, чтобы входные данные поступали в вашу программу, не так ли? Во второй раз, когда ваш цикл выполняет его, он считывает символ новой строки, который «ждет» для чтения и автоматически выходит из цикла ( '\n' != 'y' ). Вы можете сделать scanf ignore whitespace, используя вместо этого строку формата:

 " %c" 

Одним из решений может быть использование fflush(stdin) после инструкции scanf() для очистки входного буфера.

  • Как выйти из цикла while в java со сканирующим методом «hasNext» как условие?
  • Как выйти из цикла while в Java?
  • Для vs. while в программировании на C?
  • Как заменить циклы с альтернативным функциональным программированием без оптимизации хвостового вызова?
  • Смешивание файлов и циклов
  • Что такое исключение NumberFormatException и как его исправить?
  • Почему «while (! Feof (file))« всегда неправильно?
  • Выйти из цикла while, содержащего оператор switch
  • Как оптимизировать для-понимания и петель в Scala?
  • Сценарий оболочки при чтении строки цикла останавливается после первой строки
  • Чтение ввода в bash внутри цикла while
  • Interesting Posts

    Как получить подписчиков мероприятия?

    Лучший способ избежать невидимости публичного участника и разрастания / повторения исходного кода с унаследованными шаблонами classов?

    Настройки прокси-сервера Internet Explorer не сохраняются

    Есть ли какая-либо декомпрессия для iPhone?

    Создайте загрузочный USB-накопитель Linux (Knoppix) (с несколькими разделами) с Linux или Mac OS X

    Как получить JSON-файл в Angular 2

    Firebase: как сгенерировать уникальный цифровой идентификатор для ключа?

    Мой триггер MySQL не работает, простой синтаксис, а не сложный

    Использование сжатия GZIP с помощью Spring Boot / MVC / JavaConfig с RESTful

    Пример предварительного просмотра камеры с использованием SurfaceTexture в Android

    Как получить количество элементов в списке в Python?

    Android: не могу понять, как использовать setImeActionLabel

    преобразование файла Excel (xls) в файл с разделителями-запятыми (csv) без GUI

    Spring не может найти конфигурационный файл bean xml, если он существует

    Компьютер действительно медленный

    Давайте будем гением компьютера.