Как работает функция 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() происходит автоматически после достижения условия окончания цикла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д