Язык программирования Си - Компьютерные вопросы

Вопрос Язык программирования Си

Регистрация
22 Ноя 2013
Сообщения
102
Репутация
0
Спасибо
0
Монет
0
Пожалуйста имейте ввиду, что этот пользователь забанен
Изучаю язык программирования C по книге "Язык программирования Си" (Книга, Брайан Керниган и Деннис Ритчи). Остановился на теме: 1.5.1. Копирование файлов, так вот до этой темы всё было понятно и все упражнения делал. Объясните максимально понятно программу:

#include

main ()
{
int c;

c = getchar() ;
while (c != EOF) {
putchar (c) ;
c = getchar () ;
}
}

Не понятен именно этот момент -
c = getchar() ;
while (c != EOF) {
putchar (c) ;
c = getchar () ;
Что значит функция getchar(); почему говориться что она читает один символ? как это читает? как один, если я могу ввести много символов? приведите пример какой-нибудь ?
и также с другой функцией putchar (c) ; что это вообще? и вот этот цикл (c != EOF), что EOF причем тут он? как программа работает объясните, как они взаимодействуют. Очень сильно буду благодарен кто объяснить мне данную тему)
 
Регистрация
4 Авг 2013
Сообщения
82
Репутация
0
Спасибо
0
Монет
0
мне кажется getchar = получить букву тоесть с=получить букву (); пока (с не равно ЕOF){ выдать (с); с = получить букву ();
 
Регистрация
29 Ноя 2013
Сообщения
77
Репутация
0
Спасибо
0
Монет
0
То, что ты вводишь с клавиатуры, попадает в специальный системный буфер. И становится доступно для программы, как только ты нажмёшь Enter. А getchar читает из этого буфера по одному символу. Если буфер пуст - ждёт, пока ты что-то введёшь и нажмёшь Enter. getchar вводит 1 БАЙТ (код символа от 0 до 255). Но, обрати внимание, переменная c объявлена как int - и это ОБЯЗАТЕЛЬНОЕ условие. Когда файл заканчивается (в случае ввода консольного с клавиатуры нажаты Ctrl+Z и Enter), getchar начинает возвращать не код символа, а специальное значение, равное константе EOF, ОТЛИЧНОЕ от кода любого символа (обычно это значение -1). И это означает, что данных больше нет и не будет. Потому когда c становится равным EOF, цикл заканчивается.
 
Регистрация
2 Окт 2012
Сообщения
96
Репутация
0
Спасибо
0
Монет
0
getchar() - получает один символ putchar() - (вроде) выводит символ Работает все так: Программа ждет символ и записывает в переменную "c" (пока она не получит символ, код дальше не выполняется) Символ получен, идем дальше Цикл, пока "c" не станет равен EOF: Выводим "c" в консоль Программа ждет символ и записывает в переменную "c" (пока она не получит символ, код дальше не выполняется) Код повторяется
 
Регистрация
4 Сен 2013
Сообщения
87
Репутация
0
Спасибо
0
Монет
0
c = getchar() ; while (c != EOF) { putchar (c) ; c = getchar () ; getchar получает один символ putchar помещает символ в поток вывода stdout и так до тех пор пока не достигнет конец файла EOF константа -1 пока веденный символ не является -1 запрашивать символ повторно в UNIX системах для указания EOF в терминале используется CTRL+D для краткости можно написать вот так char c; while((c = getchar()) != EOF) putchar(c);
 
Регистрация
15 Сен 2013
Сообщения
88
Репутация
0
Спасибо
0
Монет
0
зачем тебе си, начинай с c#, он только популярнее становится + с ним ты всё что угодно с легкостью сделаешь, там все формы, кнопки, множество функций за тебя всё сделано и тебе только надо уметь применить.
 
Сверху Снизу