Я прочитал около 5-10 различных советов, как очистить stdin, но ни один из них не соответствует моим потребностям. Дело в том, что fflush(stdin)
отлично работал на моем компьютере, но, к сожалению, он не работает везде, поэтому мне нужно что-то с той же функциональностью. Каждый другой способ, который я пробовал, очищает stdin, когда он не пуст, но требует ввода пользователем, когда stdin IS пуст, что означает, что он требует ввода в тот момент, когда я не хочу его получать (+ он все равно отбрасывает).
Вопрос: могу ли я как-то убедиться, что stdin
IS empty, прежде чем я требую ввода пользователя? (а если нет, ТОГДА и только потом это как-то его очистить?)
что-то вроде:
if (stdin is NOT empty)
while (getchar() != '\n')
continue;
EDIT: дело в том, что я загружаю символы из stdin
один за другим, и в какой-то момент часть ввода предыдущей итерации может или не может быть отброшена. в любом случае, мне нужно иметь четкий stdin
, прежде чем я попрошу пользователя ввести другой вход для обработки. Очистка самого буфера не такая уж большая проблема, проблема в том, что происходит, когда вход пуст, когда программа доходит до точки очистки stdin
, потому что в этот момент программе нужен другой вход, который будет съеден функция очистки. То, от чего я хочу избавиться. (когда я мог использовать fflush(stdin);
, я просто знал, что для следующей строки моей программы stdin
будет пустым, несмотря ни на что, никаких вопросов не задано...)