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


Файл записей фиксированной длины - часть 2



if (n &#62= nrec) return NULL; // Номер записи некорректен


pp = ( void*) new char [size]; // Создать динамическую переменную


if (fseek(fd, 2*sizeof(int) + n*size, SEEK_SET) ==EOF)
{ delete pp; return NULL; } // Ошибка позиционирования


if (fread(pp, size, 1, fd) !=1)
{ delete pp; return NULL; } // Ошибка чтения


return pp;
}
//-------------------------------------------------------------


// Добавить запись


int Append(void *pp)
{
if (fd==NULL) return 0; // Файл не открыт


fseek(fd,0L,SEEK_ END); // Установиться на конец файла


if (fwrite(pp,size,1,fd)!=1) return 0; // Ошибка


nrec++;
fseek(fd,0L,SEEK_ SET); // Обновить переменную nrec в файле


if (fwrite((void*)&#38nrec,sizeof(int),1,fd)!=1)
return 0; // Ошибка


return 1; }
// ----------------------------------------------------------------


// Пример работы с файлом переменных типа double


void main() {
double a,*pd [20];
if (!Create("a.dat",sizeof(double))
return; // Создать файл


if (!Open("a.dat")) return; // Открыть файл


for (int i=0; i&#60 20; i++) // Добавить 20 переменных


{ a=i; Append((void*)&#38a);
for (int i=0; i&#60 20; i++) // Прочитать в обратном порядке


pd[i]=Get(19- i); // в динамические переменные


} } // и сформировать массив указателей




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