A linha stdout é armazenada em buffer, sem buffer ou indeterminada por padrão?

Seção7.9.13/7 doc99 afirma que:

Na inicialização do programa, três fluxos de texto são predefinidos e não precisam ser abertos explicitamente - entrada padrão (para leitura de entrada convencional), saída padrão (para gravação de saída convencional) e erro padrão (para gravação de saída de diagnóstico).

Como aberto inicialmente, o fluxo de erro padrão não é totalmente armazenado em buffer; os fluxos de entrada e saída padrão são totalmente armazenados em buffer se, e somente se, o fluxo puder ser determinado para não se referir a um dispositivo interativo.

Então isso faz sentido. Se você estiver enviando sua saída padrão para um arquivo, deseja que ela seja totalmente armazenada em buffer para obter eficiência.

Mas não encontro menção no padrão sobre se a saída é de buffer de linha ou sem buffer quando vocênão pode determine se o dispositivo não é interativo (ou seja, saída normal para um terminal).

O motivo pelo qual perguntei foi um comentário à minha respostaaqui que eu deveria inserir umfflush(stdout); entre as duas instruções:

printf ("Enter number> ");
// fflush (stdout); needed ?
if (fgets (buff, sizeof(buff), stdin) == NULL) { ... }

porque eu não estava terminando oprintf com uma nova linha. Alguém pode esclarecer isso?

questionAnswers(1)

yourAnswerToTheQuestion