Читает ли из стандартного ввода стандартный поток?

stdout буферизуется при подключении к терминалу, но я помню, что читал где-то, что чтение (по крайней мере, из stdin) автоматически сбрасывает stdout. Все реализации C, которые я использовал, сделали это, но я могуне найти его в стандарте сейчас.

Имеет смысл, что это работает именно так, в противном случае код выглядит так:

printf("Type some input: ");
fgets(line, sizeof line, stdin);

потребуется дополнительнаяfflush(stdout);

Так гарантированно ли будет удален стандартный вывод?

РЕДАКТИРОВАТЬ:

Как уже говорилось в нескольких ответах, похоже, чтогарантия в стандарте вывод в stdout в моем примере будет отображаться перед чтением из stdin, но с другой стороны, это намерение указано в (моем бесплатном черновом варианте) стандарте:

Динамика ввода и вывода интерактивных устройств должна осуществляться, как указано в 7.19.3. Цель этих требований заключается в том, чтобы небуферизованные или строковые буферизованные выходные данные появлялись как можно скорее, чтобы гарантировать, что сообщения-подсказки действительно появляются до того, как программа ожидает ввода.

(ИСО / МЭК 9899: проект комитета ТК2 - 6 мая 2005 г., стр. 14).

Таким образом, кажется, что нет никакой гарантии, но в любом случае это, вероятно, будет работать в большинстве реализаций. (Знаменитые последние слова...)

Ответы на вопрос(6)

Ваш ответ на вопрос