Чтение массива структур из файла - C (СИ) (74547)
Формулировка задачи:
Здравствуйте, помогите решить проблемку.
Имеется функция чтения:
Чтение происходит из файлика, содержащего несколько структур, как определить в цикле номер последний структуры(их общее кол-во в файлике)?
Ф-ция записи структур:
int Read(MPh Pdata[maxlen], int len)
{
int i;
pF = fopen("B.d", "r");
for (i = 0;; ++i)
{
fread(&Pdata[i], sizeof(MPh), 1, pF);
/*if () <--условие
{
break;
}*/
}
fclose(pF);
return i;
}void Write(MPh Pdata[maxlen], int len)
{
int i;
pF = fopen("B.d", "w");
for (i = 0; i < (len+1); ++i)
{
fwrite(&Pdata[i], sizeof(MPh), 1, pF);
}
fclose(pF);
}Решение задачи: «Чтение массива структур из файла»
textual
Листинг программы
i=0;
while (fread(&Pdata[i++], sizeof(MPh), 1, pF))
{
}
Объяснение кода листинга программы
В данном коде происходит следующее:
- Объявляется переменная
iсо значением 0, которая будет использоваться в цикле. - Открывается файл
pFдля чтения с помощью функцииfopen. - Задается условие цикла
while, которое будет выполняться до тех пор, пока функцияfreadуспешно читает данные из файла. - В каждой итерации цикла
whileпроисходит чтение данных из файла в массивPdataс помощью функцииfread. Размер чтения данных определяется параметромsizeof(MPh), гдеMPh- это структура данных, которую необходимо прочитать из файла. - После каждой итерации цикла
iувеличивается на 1, чтобы перейти к следующему элементу массиваPdata. - Внутри цикла нет никаких действий, поэтому ничего не происходит.
- После окончания цикла
whileфайлpFзакрывается с помощью функцииfclose.