Всем привет!
Сразу палками не бейте за такой дурацкий вопрос - сто лет не писал на С и тут что-то навеяло вдруг. Накидал простейший пример и немножко впал в ступор - не могу понять почему так происходит и все тут.
Идея следующая - программа считывает символ из stdin и тут же выводит его в stdout до тех пор пока не встретит конец строки.
Первая версия выглядела следующим образом:
include <stdio.h>
int main(void)
{
char ch;
ch = getc(stdin);
while (ch != '\n')
{
printf("%c", ch);
ch = getc(stdin);
}
return 0;
}
Вроде все просто и понятно, причем я ожидал, что мой ввод будет постоянно дублироваться: я ввожу букву A и тут же она выводится в stdout. Но вот после запуска программы так почему-то не произошло - код терпеливо дождался выхода из цикла и только лишь потом все вывелось на экран.
Ладно, подумал я, ведь буферизацию никто не отменял. Поэтому дальше программа стала выглядеть вот так:
include <stdio.h>
int main(void)
{
char ch;
ch = getc(stdin);
while (ch != '\n')
{
printf("%c", ch);
fflush(stdout);
ch = getc(stdin);
}
return 0;
}
Но и после этого никаких изменений - все ровным счетом также.
Дак вот - как я понимаю C обязательно ждет завершения ввода (например, нажатием Enter). Нет ли способа решить задачу именно так, как я хотел? Чтобы ввели символ и он тут же вывелся на экран.
Всем спасибо!