write () для вывода stdout и printf не чередуются?

#include <stdio.h>
#define MAXLEN 256

int main() {
  int n;
  char buf[MAXLEN];
  while((n = read(0,buf,sizeof(buf))) != 0){
    printf("n: %d:",n);
    write(1,buf,n);
  }
  return 1;
}

Выход программы (где первыйread и первыйwrite набирается пользователем и повторяется терминалом):

read
read
write
write
n: 5:n: 6:

Вывод printf происходит после нажатия Ctrl + D при стандартном вводе, а не вместе с последующими чтениями. Почему это происходит?

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

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