Как работает функция getchar? - C (СИ)
Формулировка задачи:
Здравствуйте. Не совсем понимаю как работает функция getchar. Нашёл такое описание:
Функция getchar за одно обращение к ней выдает в качестве результата один символ, поступивший с системного ввода.
Возьмём к примеру такую программу, которая подсчитывает количество введённых символов:
Всё работает верно. Количество введённых символов выдает верно, то есть как надо, в условии считывается ОДИН символ, затем увеличивается счётчик. А теперь такая программа, которая должна печатать введённые нами символы:
В таком случае программа печатает введённые нами символы только после нажатия Enter. То есть в условие считывается не ОДИН символ, а они считываются пока не нажат Enter. А если изменить код так:
То вместо символов печатаются смайлики. Ничего не могу понять. Помогите разобраться. Правильно ли я понимаю, что getchar считывает ОДИН символ и переходит к следующей строке программы? Если да, то почему во втором случае он ждёт нажатие Enter?
#include <stdio.h>
main(){ double cnt = 0.0;
while (getchar() != EOF) ++cnt;
printf("%.0f\n", cnt );
}#include <stdio.h>
main()
{
char c;
while((c=getchar())!=EOF) putchar(c);
}#include <stdio.h>
main()
{
char c;
while(c=getchar()!=EOF) putchar(c);
}Решение задачи: «Как работает функция getchar?»
textual
Листинг программы
#include<stdio.h>
main()
{
int c;
while((c=getchar())!=EOF)
putchar(c);
}
Объяснение кода листинга программы
- Включаем файл
для использования функций ввода-вывода. - Определяем функцию main().
- Объявляем переменную типа int c для хранения значения, возвращаемого функцией getchar().
- Входим в цикл while, условием которого является неравенство c и EOF (конец файла).
- Внутри цикла вызываем функцию getchar() и присваиваем её результат переменной c.
- Вызываем функцию putchar() для вывода значения переменной c.
- Цикл продолжается до тех пор, пока не будет достигнуто условие окончания (EOF).
- Выход из функции main() происходит автоматически после достижения условия окончания цикла.