Чтение массива структур из файла - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д