Чтение массива структур из файла - 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))
    {
    }

Объяснение кода листинга программы

В данном коде происходит следующее:

  1. Объявляется переменная i со значением 0, которая будет использоваться в цикле.
  2. Открывается файл pF для чтения с помощью функции fopen.
  3. Задается условие цикла while, которое будет выполняться до тех пор, пока функция fread успешно читает данные из файла.
  4. В каждой итерации цикла while происходит чтение данных из файла в массив Pdata с помощью функции fread. Размер чтения данных определяется параметром sizeof(MPh), где MPh - это структура данных, которую необходимо прочитать из файла.
  5. После каждой итерации цикла i увеличивается на 1, чтобы перейти к следующему элементу массива Pdata.
  6. Внутри цикла нет никаких действий, поэтому ничего не происходит.
  7. После окончания цикла while файл pF закрывается с помощью функции fclose.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы