Вопрос по СИ

си програмирование

Вопрос в операторах putchar() и getchar().
Если код такой:
s=getchar()
putchar(s)
то он выводит почему то только один символ, самый первый. Объясните саму суть, в учебнике написано, что изначально строковая переменная должна декларироваться как int...
Такая запись выводит все строку разом
while (s!=EOF){
putchar(s)
s=getchar()
}
Объясните логику этих манипуляций. Как я понимаю этот цикл -> Сначала идет проверка на соответсвие s значению конца файла, s не равно и он топает в тело цикла. Далее он выводит содержимое переменной s, затем снова просит ввести с клавиатуры значение переменной s.
Но если удалить строчку s=getchar() , то по логике он должен выводить все содержимое переменной s бесконечно, что он идет, за одним исключением, печатает он только первый символ. Или я не так понимаю getcha()r?

Примечание:
Извиняюсь за опечатки)

Примечание:
Но как тогда происходит итерация этого символьного массива без индексов?

Примечание:
Или он работает так...
Вбиваю якобы кучу символов... он берет getchar'ом первый символ (не с клавиатуры,а с экрана), а putchar'ом выводит на монитор, как только все символы закончились он просит ввести их с клавиатуры? То есть getchar не просто ввод от пользователя но и чтения из буфера консоли?
Ответы:
в си нету строкового типа, только символьный, а строка ничто иное как символьный массив, потому-то и нужен цикл
Эти функции работают с отдельными символами, а не со строками.
getchar() берёт и возвращает один символ из стандартного ввода. Если стандартным вводом является консоль и она не может отдать символ по причине его отсутствия, то она запрашивает ввод у пользователя.
>То есть getchar не просто ввод от пользователя но и чтения из буфера консоли?
То есть getchar() вообще не ввод от пользователя. Ввод от пользователя обеспечивается самой консолью, а getchar() просто возвращает символы которые ему передаёт консоль.


16 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.