Пожалуйста имейте ввиду, что этот пользователь забанен
Изучаю язык программирования 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 причем тут он? как программа работает объясните, как они взаимодействуют. Очень сильно буду благодарен кто объяснить мне данную тему)
То, что ты вводишь с клавиатуры, попадает в специальный системный буфер. И становится доступно для программы, как только ты нажмёшь Enter. А getchar читает из этого буфера по одному символу. Если буфер пуст - ждёт, пока ты что-то введёшь и нажмёшь Enter. getchar вводит 1 БАЙТ (код символа от 0 до 255). Но, обрати внимание, переменная c объявлена как int - и это ОБЯЗАТЕЛЬНОЕ условие. Когда файл заканчивается (в случае ввода консольного с клавиатуры нажаты Ctrl+Z и Enter), getchar начинает возвращать не код символа, а специальное значение, равное константе EOF, ОТЛИЧНОЕ от кода любого символа (обычно это значение -1). И это означает, что данных больше нет и не будет. Потому когда c становится равным EOF, цикл заканчивается.
getchar() - получает один символ putchar() - (вроде) выводит символ Работает все так: Программа ждет символ и записывает в переменную "c" (пока она не получит символ, код дальше не выполняется) Символ получен, идем дальше Цикл, пока "c" не станет равен EOF: Выводим "c" в консоль Программа ждет символ и записывает в переменную "c" (пока она не получит символ, код дальше не выполняется) Код повторяется
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);
зачем тебе си, начинай с c#, он только популярнее становится + с ним ты всё что угодно с легкостью сделаешь, там все формы, кнопки, множество функций за тебя всё сделано и тебе только надо уметь применить.