(содержимое заметки приведено с сокращением)
Глава 9
Файлы и потоки
В языке С любой файл рассматривается как последовательный поток байтов. Каждый файл оканчивается или маркером конца файла, или особым байтом, определенным в работающей файлами программе. В начале исполнения программы автоматически открываются три файла и связанные с ними потоки – стандартный ввод (указатель файла stdin), стандартный вывод (указатель файла stdout), и стандартный ошибка(указатель файла stderr).
Если хотим вывести строку на экран результатов, то можно написать следующим образом:
fputs(const char*, stdout); - это тоже, что написать puts(const char*);
Если хотим с клавиатуры ввести строку, то можно написать следующим образом:
fgets(char *, int, stdin); - это тоже, что написать gets(const char*);
fprintf(stdout, const char*,…); - это тоже, что printf(const char*,…);
fscan(stdin, const char*,…); - это тоже, что scan(const char*,…);
Файл – это именованный объект, хранящий данные, на каком либо носителе (дискета, винчестер, CD). В переменных и массивах данные хранятся временно. Файлы предназначены для постоянного хранения больших объемов данных Файлы, в отличии от массивов, могут располагаться не только в оперативной памяти (электронном диске), но и на жестких или на внешних носителях. Файлы не имеют фиксированной длины, т.е. могут увеличиваться или уменьшаться. Перед работой с файлом его необходимо открыть, а после работы закрыть.
Файловая система – это совокупность программных средств для доступа к файлам, т.е. имя файла. В файловой системе MS-DOS имена файлов состоят из двух частей, разделенные точкой: имя файла и расширение. Поле имени файла может содержать не более восьми символов, а поле расширения не более трех символов.
Различаются два вида файлов: текстовые и бинарные. Текстовый файл может быть просмотрен и отредактирован с клавиатуры любым текстовым редактором и имеет простую структуру, которая состоит из последовательности символов. Эта последовательность символов можно разбить на строки, каждая строка заканчивается двумя кодами: 10 (0хD) и 13 (0xA). Бинарный файл – это файл, который не имеет структуру текстового файла. Каждая программа для своего бинарного файла определяет свою структуру. Существуют функции для работы как с текстовыми, так и с бинарными файлами.
Для работы с файлами необходимо включить библиотеку <stdio.h>, где находятся прототипы функций работы с файлами. Для открытия файла используют функцию fopen().
FILE * fopen(char *filename, char * mode);
Возвращаемое значение (FILE *) – это указатель на структуру типа FILE, который называется указатель на файл. Возвращаемое значение нужно хранить: во-первых, для проверки открытия файла, т.е. если возвращаемое значение равно NULL, то произошла ошибка при открытии и следовательно нужно остановить работу программы; во-вторых для работы с файлом в программе.
char *filename задает путь, т.е. местонахождение файла и имя открываемого файла.
char *mode – это тип доступа к файлу, который может принимать следующие значения:
...
|