Есть много вопросов о промывочном стандартном вводе, шахты не о том, чтобы очистить его, а о значении следующей функции:Почему пустой STDIN с EOF
while((c = getchar()) != '\n' && c != EOF);
Я пытаюсь думать о сценарии и почему как нам понадобится EOF в этой функции для опорожнения stdin? Пользователь вводит что-то и нажимает enter, и мы освобождаем буфер до тех пор, пока не найдем enter, куда входит EOF?
Спасибо
Edit: Большое спасибо за первый ответ и второй комментарий, который отвечает на мой вопрос и полностью меня удовлетворяет.
Кроме сценария, в котором мы передаем наш ввод из файла, где у нас есть реальный EOF, который в значительной степени ответил на мой вопрос, я до сих пор не понимаю, зачем нам нужен EOF в любом другом сценарии для такой функции. пользователь может вызывать только EOF в начале строки в терминале, поэтому его нельзя использовать для опорожнения буфера.
Вы не очищаете 'stdin' с' EOF', этот код просто читает все символы из 'stdin' и отбрасывает их, это зависит от того, где этот код, я имею в виду контекст. Если вы, например, используете 'scanf()' для чтения значения и введите допустимое значение, за которым следуют пробелы, этот код удалит все пробелы из входного буфера. –
Рассмотрите сценарий, в котором оболочка подключает входные данные из файла в STDIN вашего приложения ... –
Для полноты вам может потребоваться опубликовать тип 'c', который должен быть' int', а не 'char'. – chux