Язык программирования C


Копирование файла


Имея в своем распоряжении только функции getchar и putchar вы можете, не зная ничего более об операциях ввода-вывода, написать удивительное количество полезных программ. Простейшим примером может служить программа посимвольного копирования вводного файла в выводной. Общая схема имеет вид:

ввести символ while (символ не является признаком конца файла) вывести только что прочитанный символ ввести новый символ

программа, написанная на языке "C", выглядит следующим образом:

main() /* copy input to output; 1st version */ { int c;

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

оператор отношения != означает "не равно".

Основная проблема заключается в том, чтобы зафиксировать конец файла ввода. Обычно, когда функция getchar наталкивается на конец файла ввода, она возвращает значение , не являющееся действительным символом; таким образом, программа может установить, что файл ввода исчерпан. Единственное осложнение, являющееся значительным неудобством, заключается в существовании двух общеупотребительных соглашений о том, какое значение фактически является признаком конца файла. Мы отсрочим решение этого вопроса, использовав символическое имя EOF для этого значения, каким бы оно ни было. На практике EOF будет либо -1, либо 0, так что для правильной работы перед программой должно стоять собственно либо

#define EOF -1

либо

#define EOF 0

Использовав символическую константу EOF для представления значения, возвращаемого функцией getchar при выходе на конец файла, мы обеспечили, что только одна величина в программе зависит от конкретного численного значения.

Мы также описали переменную 'c' как int, а не char, с тем чтобы она могла хранить значение, возвращаемое getchar. Как мы увидим в лекции № 2, эта величина действительно int, так как она должна быть в состоянии в дополнение ко всем возможным символам представлять и EOF.

Программистом, имеющим опыт работы на "C", программа копирования была бы написана более сжато. В языке "C" любое присваивание, такое как




Начало  Назад  Вперед