Информатика и технология программирования


           

Для дополнения файла новыми данными


Для дополнения файла новыми данными необходимо установить текущую позицию на конец файла и выполнить операцию записи. Текущая позиция представляется в программе переменной типа long. Для работы с ней в стандартной библиотеке имеются две функции:

long ftell(FILE *fp);



возвращает текущую позицию в файле. Если по каким-то причинам текущая позиция не определена, функция возвращает -1L. Это же самое значение будем использовать в дальнейшем для представления недействительного значения файлового указателя (файловый
NULL ), самостоятельно определив его

&#35define FNULL -1L



Вторая функция устанавливает текущую позицию в файле на байт с номером pos. Параметр
mode определяет, относительно чего отсчитывается текущая позиция в файле, и имеет следующие символические и числовые значения (установленные в stdio.h) .

int fseek(FILE *fp, long pos, int mode);

&#35define SEEK_SET 0 // Относительно начала файла

// начало файла - позиция 0

&#35define SEEK_CUR 1 // Относительно текущей позиции,

// &#62 0 - вперед, &#60 0 - назад

&#35define SEEK_END 2 // Относительно конца файла

// (значение pos - отрицательное)

Функция
fseek возвращает значение 0 при успешном позиционировании и -1 (EOF) -при ошибке. Получить текущую длину файла можно простым позиционированием:

long fsize;
fseek(fl,0L,SEEK_END); // Установить позицию на конец файла

fsize = ftell(fd); // Прочитать значение текущей позиции

Функции
fread и fwrite используются для перенесения данных из файла в память программы (чтение) и обратно (запись).

int fread (void *buf, int size, int nrec, FILE *fd);
int fwrite (void *buf, int size, int nrec, FILE *fd);











Особенностью этих функций является то, что для них безразличен (неизвестен) характер структуры данных в той области памяти, в которую осуществляется ввод-вывод (указатель void* buf). Функци
fread читает, а функция fwrite пишет в файл, начиная с текущей позиции, nrec элементов размерностью size байтов каждый, возвращая количество успешно прочитанных (записанных) элементов.


Содержание  Назад  Вперед