Добавил:
north memphis Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование II Экзамен Теория и Практика.pdf
Скачиваний:
2
Добавлен:
29.01.2025
Размер:
344 Кб
Скачать
☆

Файлы

Определения

Файл - именованная область данных на носителе. Файлы бывают бинарные и текстовые.

Текстовые файлы – файлы, которые могут быть восприняты человеком

Абсолютный путь – путь, по которому файл однозначно идентифицируется.

Относительный путь – идентифицирует файл относительно какой-либо директории.

fopen – функция для открытия или создания файла. В случае неудачи вызывает нулевой указатель. В случае успешного открытия или создания файла, возвращается указатель на дескриптор файла.

Объявление файлов:

FILE* fopen(const char* FilePath,const char* Mode);

FilePath – путь к файлу; Mode – режим. При ошибке возвращает NULL, в случае успеха – указатель на дескриптор файла

Режимы:

1)​ a (append) – файл открывается для дополнения данных в конец. Если файл не существует, то он будет создан. Разрешена только запись

2)​ a+ (append + read) – отличается тем, что разрешена не только запись, но и чтение.

3)​ r (read) – предназначен для открытия файла только для чтения. Файл должен существовать,

иначе функция вернет нулевой указатель.

4)​ r+ (read + write) - отличается от предыдущего наличием права на запись. Файл должен

существовать.

5)​ w (write) – предназначен для записи данных в файл. Если файл не существует, то будет создан. Если существует, то будет перезаписан.

6)​ w+ (write + read) – появляется право на чтение

Если в любом из режимов приписать с конца b (binary), то файл будет открыт или создан бинарно.

Перезапись файла – удаление всех данных из него с последующим обнулением размера файла.

Расширение файла не влияет на то, в каком режиме будет открыт файл.

fclose – закрытие файла

int fclose (FILE* File); /*0 - в случае успеха*/

Бинарный файл имеет определенный формат. Применяется набор правил, в соответствии с которыми структурированы данные в бинарном файле.

Смещение

int fseek( FILE* f, long int offset, int Mode);

f – дескриптор файла; offset – новое смещение в файле; Mode – режим смещения.

В случае ошибки возвращает “-1”, при успешном выполнении возвращает отличное от “-1”.

Режимы смещения:

SEEK_SET – смещение относительно начала файла;

SEEK_CUR – смещение относительно текущего смещения;

SEEK_END – смещение относительно конца файла.

fseek64 – работа с большими файлами. “0” – успешное завершение, не “0” – в случае ошибки.

Функция для получения текущего смещения относительно начала:

long int ftell(FILE* f); /*ошибка - "-1"*/

Имеет ограничение на работу с большими файлами.

Определение размера файла:

Поставить каретку в конец файла; Вызвать функцию ftell; Ее смещение == размер в Байтах.

Чтение и запись данных в файл

Функция для записи данных в файл:

int fprintf(FILE* f, const char* Spec,...);

Возвращает количество успешно записанных символов в файл, в случае ошибки – число меньше

нуля.

Функция для чтения данных из файла:

int fscanf(FILE* f, const char* Spec,...);

Возвращает количество спецификаторов.

Функция для записи данных в бинарный файл

size_t fwrite(const void* Buffer, size_t ElementSize,size_t ElementsNumber,FILE* f)

Возвращает количество успешно записанных элементов (равно третьему аргументу)

Buffer – буфер с данными; ElementSize – размер элементов; ElementsNumber – количество

элементов; FILE* f – дескриптор файла.

Функция чтения данных из бинарного файла

size_t fread(void* Buffer, size_t ElementSize, size_t ElementsNumber, FILE* f)

В случае успеха возвращает значение численно равное третьему аргументу. Небезопасна

Buffer – указатель на буфер, в который считываются данные; ElementSize – размер элемента;

ElementsNumber – количество элементов; FILE* f – дескриптор файла.

int feof(FILE *f);

Позволяет достичь конца файла. Возвращает ненулевое значение, если конец был достигнут.

int ferror(FILE* f);

Проверяет на ошибки. Возвращает ненулевое значение, если предыдущая операция завершилась ошибкой.

int fgetc(FILE* f);

Чтение одного байта по текущему смещению (применима и к бинарным). В случае ошибки возвращает EOF.

char* fgets(char* s, size_t MaxLen, FILE* f);

Чтение строки из текстового файла. Возвращает значение первого аргумента, при ошибке

возвращает NULL

s – указатель на массив, в который считывается строка из текстового файла; MaxLen –

максимальное количество символов в массиве, включая терминальный ноль, FILE* f – дескриптор

файла.