Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Виетор
5 / 5 / 3
Регистрация: 01.03.2013
Сообщений: 199
1

Чтение массива структур из файла

29.01.2014, 17:56. Просмотров 864. Ответов 7
Метки нет (Все метки)

Здравствуйте, помогите решить проблемку.
Имеется функция чтения:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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;
}
Чтение происходит из файлика, содержащего несколько структур, как определить в цикле номер последний структуры(их общее кол-во в файлике)?
Ф-ция записи структур:
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
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);
 
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2014, 17:56
Ответы с готовыми решениями:

Чтение массива структур из файла
читаю по while !feof(), проблема в том, что если файл пустой, то все равно проскакивает на одну...

Чтение массива структур из текстового файла
Задание таково: есть структура из 2-х полей:№телефона и комментарий Создать тел.книгу. ...

Чтение данных из файла в массив структур.
Нужна помощь, не могу понять почему оно не хочет считывать с файла, записывает нормальна а вот...

Чтение данных из файла, запись в массив структур
Всем привет, помогите, пожалуйста, с программой. Суть такова: имеется файл вида нужно...

Чтение и запись массива структур
Добрый вечер! Прошу помощи, так как уже не знаю что делать: вот задание Данные о книгах на...

7
vua72
418 / 417 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
29.01.2014, 18:34 2
Лучший ответ Сообщение было отмечено Виетор как решение

Решение

C
1
2
3
4
i=0;
while (fread(&Pdata[i++], sizeof(MPh), 1, pF))
    {
    }
вместо for();
1
Виетор
5 / 5 / 3
Регистрация: 01.03.2013
Сообщений: 199
29.01.2014, 18:55  [ТС] 3
Цитата Сообщение от vua72 Посмотреть сообщение
C
1
2
3
4
i=0;
while (fread(&Pdata[i++], sizeof(MPh), 1, pF))
    {
    }
вместо for();
Что-то не пойму, почему возвращает 3 вместо 1-го...
0
vua72
418 / 417 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
29.01.2014, 19:36 4
в смысле? три записи вмето одной?
1
Виетор
5 / 5 / 3
Регистрация: 01.03.2013
Сообщений: 199
29.01.2014, 19:38  [ТС] 5
Цитата Сообщение от vua72 Посмотреть сообщение
в смысле? три записи вмето одной?
Забираю свои слова обратно, это в другой ф-ции счетчик накручивался.)
0
vua72
418 / 417 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
29.01.2014, 19:46 6
Ok, вообще-то можно добавить внутрь цикла
C
1
if(ferror(pF)){perror("File is corrupt!!!!"); break;}
или exit(-1) вместо break;
1
Виетор
5 / 5 / 3
Регистрация: 01.03.2013
Сообщений: 199
29.01.2014, 19:53  [ТС] 7
Цитата Сообщение от vua72 Посмотреть сообщение
Ok, вообще-то можно добавить внутрь цикла
C
1
if(ferror(pF)){perror("File is corrupt!!!!"); break;}
или exit(-1) вместо break;
Печатает сообщение что файл поврежден, если есть наличие ошибки при работе с файлом?
0
vua72
418 / 417 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
29.01.2014, 19:55 8
да.
1
29.01.2014, 19:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 19:55

Заполнение массива структур из файла
Файл имеет вид: 1 Sidorov Moscow 3 4 2 Petrov St.Peterburg 5 31 3 Falin Chetai 24 32 4...

Чтение из файла динамического массива.
Добрый день! Подскажите пожалуйста как правильно считать динамический массив из файла. Если можно...

Чтение из файла в два массива int
Есть текстовый *txt файл, в котором хранятся данные в следующем виде: 2, 56 34, 45 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru