Quais são as regras do buffer stdout de liberação automática em C?

Estou curioso para saber quais condições devem ser satisfeitas para liberar o buffer stdout automaticamente.

Antes de tudo, fiquei confuso que esse pseudo-código não imprime a saída a cada iteração:

while (1) {
    printf("Any text");
    sleep(1);
}

Mas se eu adicionar um caractere de nova linha, será.

Após algumas experiências, descobri que na minha máquina o buffer stdout é liberado:

Quando eu coloco em stdout 1025 caracteres ou mais;Quando eu leio stdin;Quando eu coloco o caractere de nova linha em stdout;

A primeira condição é totalmente clara - quando o buffer estiver cheio, ele deverá ser lavado. O segundo também é razoável. Mas por que o caractere de nova linha causa descarga? Quais são as outras condições implícitas para isso?

questionAnswers(5)

yourAnswerToTheQuestion