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


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



// Определение size0


p-&#62size0=sizeof(int)*2 + sizeof(item) * p-&#62ns;
for (i=0,p-&#62strlnt=0; i&#60p-&#62ns; i++) // Определение длины


p-&#62strlnt += p-&#62ST[i].size; // строки таблицы


return(p);
}
//----- Чтение элемента таблицы из столбца j строки i


// функция возвращает элемент в динамической памяти


void *getrec(int i, int j, TableDef *p)
{
void *data;
int lnt; // Суммарная размерность


int k; // столбцов от 0 до j-1


if (p-&#62fd ==NULL) return NULL;
if (p-&#62ns &#60=j || p-&#62nr &#60=i) return NULL;
for (k=0,lnt=0; k&#60j; k++) lnt += p-&#62ST[k].size;
data = malloc(p-&#62ST[j].size);
fseek(p-&#62fd, p-&#62size0 + (long)p-&#62strlnt*i + lnt, 0);
//


// Смещение строк таблицы в файле +


// Размерность i полных строк +


// Сумма длин столбцов от 0 до j-1


//


fread(data,p-&#62ST[j].size,1,p-&#62fd);
return data;
}




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



Книжный магазин