Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ullaluna
8 / 6 / 1
Регистрация: 11.11.2013
Сообщений: 75
#1

Считать из файла структуры в массив (указателей) - C++

14.01.2014, 01:37. Просмотров 279. Ответов 4
Метки нет (Все метки)

Ребята, как это грамотно сделать? Мой моск вскипел. Файл бинарный, количество экземпляров всегда одно и то же. В программе эти структуры обрабатываются, значения изменяются, затем снова записываются в файл. Вот эта функция адекватно работает только для первого элемента массива:

C++
1
2
3
4
struct dates {
  char[10] name;
  int serNumber;
  double volume;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
dates* readFile(int arrsize) {
  dates data1, data2_temp;
  dates *arrofStruct[arrsize];
  int i = 0;
  dStream=fopen("binfile", "rb");
  fread(&data1, sizeof(dates), 1, dStream);
  
  do {
    
   data2_temp = data1;
   *arrofStruct[i] = data1;
   i++;
  }
  while (fread(&data1, sizeof(dates), 1, dStream));
  fclose(dStream);
  
  return *arrofStruct;
}
Что-то я напутала с адресами?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2014, 01:37     Считать из файла структуры в массив (указателей)
Посмотрите здесь:

Считать определенный пункт структуры из файла и записать в массив - C++
Имеется структура записанная в файл, как считать опрделенный пункт структуры и записать в массив?

Массив указателей на структуры - C++
Хочу сделать тел. справочник через массив указателей на структуры, но получаю нечто такое: size_t size = 256; cont_info_**...

Структуры, массив указателей на функции - C++
Подскажите пожалуйста, в чем ошибка в данном коде: 1>Source.obj : error LNK2005: "bool (__cdecl** mark)(double,double)"...

Копировать массив указателей на структуры в очередь - C++
Я пишу курсач на тему создания динамических структурных переменых оформленных в виде очереди. Мне нужно редактировать созданные структурные...

Создайте динамический массив указателей на структуры - C++
Задача: дана структура struct Sample { char c; double x; int *p; }; Создайте динамический массив указателей на...

Шаблон структуры данных - массив указателей на заголовки списков - C++
Мне выдали задание на курсовую работу: "Шаблон структуры данных - массив указателей на заголовки списков. Элемент списка содержит...

Как считать из файла символы и цифры одновременно? Структуры - C++
Имеется файл txt с таким заполнением: Gingi 25 12 1 Klinl 36 74 1 Frogo 963 32 2 Hlolo 69 85 1 Frodo 369 42 2 Ringo 951 43 1 ...

Считать массив А с файла a.txt. после чего сформировать массив С в котором все отрицательные элементы с масси - C++
Помогите написать программу на C++. Изучала этот язык меньше пол года, пока есть проблемы. очень нужна ваша помощь Считать массив А с файла...

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

Считать из файла в массив - C++
Добрый день форумчани, у меня маленькое недопонимание. В смысле я не могу считать из файла в МАССИВ, данный массив есть объектом главного...

Считать массив А(n) из файла - C++
Колокол. Считать массив А(n) из файла. В массиве наименьший элемент поместить на первое место, наименьший из оставшихся – на последнее...

Считать с файла в массив - C++
Подскажите, как считать посимвольно из файла в двумерный массив через fscanf? например в файле: ав сd и если посимвольно...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
14.01.2014, 01:47     Считать из файла структуры в массив (указателей) #2
Не понятно для чего вам нужно вот эта строка?
C++
1
data2_temp = data1;
И ошибка скорей всего вот в этой строке 6 и 14. Т.к если смотреть на офф-источник http://www.cplusplus.com/reference/cstdio/fread/ (не реклама), то там процедура fread 2 аргумент имеет кол-во, а третий как раз таки размер считываемых данных, а у вас все наоборот.
Ullaluna
8 / 6 / 1
Регистрация: 11.11.2013
Сообщений: 75
14.01.2014, 01:53  [ТС]     Считать из файла структуры в массив (указателей) #3
Цитата Сообщение от Bend3r Посмотреть сообщение
Не понятно для чего вам нужно вот эта строка?
Это рудимент с предыдущего варианта функции. Не нужен, забыла удалить.

Цитата Сообщение от Bend3r Посмотреть сообщение
процедура fread 2 аргумент имеет кол-во, а третий как раз таки размер считываемых данных
Разве?
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
Считываем по одной структуре за раз. Размера данной структуры. Что не так?
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
14.01.2014, 02:17     Считать из файла структуры в массив (указателей) #4
Цитата Сообщение от Ullaluna Посмотреть сообщение
Считываем по одной структуре за раз. Размера данной структуры. Что не так?
C++
1
fread(&data1, sizeof(dates), 1, dStream);
вот как написали вы. Получается количество равно размеру, в общем попробуйте поменять местами 2 и 3 аргумент. Вот так.
C++
1
fread(&data1, 1, sizeof(dates), dStream);
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.01.2014, 21:24     Считать из файла структуры в массив (указателей) #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
struct dates 
{
    char name[10];
    int serNumber;
    double volume;
};
 
 
dates* readFile(int arrsize) 
{
  dates* arrofStruct = new dates[arrsize];
  
  FILE* dStream = fopen("binfile", "rb");
  if (!dStream) 
  {
      printf("Error opening binfile!");
      return;
  }
  
  int i = 0;
  while (fread(&arrofStruct[i], sizeof(dates), 1, dStream))
  {
      i++;
      if (i == arrsize) break;
  }
  
  fclose(dStream);
  
  return arrofStruct;
}
Yandex
Объявления
14.01.2014, 21:24     Считать из файла структуры в массив (указателей)
Ответ Создать тему
Опции темы

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