Согласно определению getchar () он читает символ из стандартного ввода.К сожалению, stdin ошибочно принят за клавиатуру, что может быть не так для getchar.getchar использует буфер как стандартный ввод и читает по одному символу за раз.В вашем случае, поскольку EOF отсутствует, getchar и putchar выполняются несколько раз, и вам кажется, что за один раз выводится вся строка.внесите небольшое изменение, и вы поймете:
putchar(c);
printf("\n");
c = getchar();
Теперь посмотрите на вывод по сравнению с исходным кодом.
Еще один пример, который объяснит вам понятие getchar и буферизованного stdin:
void main(){
int c;
printf("Enter character");
c = getchar();
putchar();
c = getchar();
putchar();
}
Введите два символа в первом регистре.Во второй раз, когда запущен getchar, вводите ли вы какого-нибудь персонажа?НЕТ, но все еще работает putchar.
В конечном итоге это означает, что есть буфер, и когда вы что-то набираете и нажимаете ввод, он уходит и устанавливается в буфере.getchar использует этот буфер как stdin.