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

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

Войти
Регистрация
Восстановить пароль
 
nill
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
#1

Запись массива в dat файл - C++

17.11.2010, 23:07. Просмотров 782. Ответов 7
Метки нет (Все метки)

Хочу записать большой массив в dat файл но получаю ошибку
error C2070: int [53][53][53][53][53][6]: недопустимый оператор sizeof
если делаю массив чуть поменьше то все проходит без ошибок


C++
1
2
3
4
int card_5[53][53][53][53][53][6]={0};
FILE * fout = fopen("card_5_ryka.dat", "wb");
fwrite(card_5,  sizeof(card_5), 1, fout);  
fclose(fout);
Как можно записать такой массив в файл ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.11.2010, 23:48     Запись массива в dat файл #2
А можно вопрос, зачем вам такая размерность? вы сами не путаетесь?
kle0fas
6 / 6 / 1
Регистрация: 25.02.2010
Сообщений: 12
18.11.2010, 00:40     Запись массива в dat файл #3
Итоговый файл будет весить ~4,6 Гб
попробуй через 6 циклов сделать :
C++
1
2
3
4
5
6
7
for(i1=0;i1<53;i1++)
  for(i2=0;i2<53;i2++)
    for(i3=0;i3<53;i3++)
      for(i4=0;i4<53;i4++)
        for(i5=0;i5<53;i5++)
          for(i6=0;i6<53;i6++)
            fprintf(fout,"%d ",card_5[i1][i2][i3][i4][i5][i6]);
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
18.11.2010, 00:43     Запись массива в dat файл #4
kle0fas, тогда уж так)))
C++
1
2
3
4
5
6
7
for(i1=0;i1<53;i1++)
  for(i2=0;i2<53;i2++)
    for(i3=0;i3<53;i3++)
      for(i4=0;i4<53;i4++)
        for(i5=0;i5<53;i5++)
          for(i6=0;i6<6;i6++)
            fprintf(fout,"%d ",card_5[i1][i2][i3][i4][i5][i6]);
fasked
18.11.2010, 00:47
  #5

Не по теме:

Шестое измерение - власть над информацией.

kle0fas
6 / 6 / 1
Регистрация: 25.02.2010
Сообщений: 12
18.11.2010, 00:48     Запись массива в dat файл #6
Ну да, ты прав)))
C++
1
2
3
4
5
6
7
8
9
10
11
int card_5[53][53][53][53][53][6]={0};
int i1,i2,i3,i4,i5,i6;
FILE * fout = fopen("card_5_ryka.dat", "wb");
for(i1=0;i1<53;i1++)
  for(i2=0;i2<53;i2++)
    for(i3=0;i3<53;i3++)
      for(i4=0;i4<53;i4++)
        for(i5=0;i5<53;i5++)
          for(i6=0;i6<6;i6++)
            fprintf(fout,"%d ",card_5[i1][i2][i3][i4][i5][i6]);
fclose(fout);
nill
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
18.11.2010, 08:44  [ТС]     Запись массива в dat файл #7
kle0fas,
silent_1991,

Спасибо за ответы
А какой код для открытия и закрытия файла ?
с fprintf никогда не работал
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2010, 19:41     Запись массива в dat файл
Еще ссылки по теме:

C++ Запись и чтение файла dat
Запись в файл массива объектов C++
C++ Запись массива в файл
Как в бинарном файле (.dat) удалять и редактировать выбранную запись C++
Запись массива в двоичный файл C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
18.11.2010, 19:41     Запись массива в dat файл #8
Создаём указатель на поток: FILE *fin;
Открываем: if ((fin = fopen("file", "r")) == NULL) exit(-1); В данном случае file - имя файла, r - режим открытия (r - для чтения, w - для записи, есть ещё несколько режимов, если интересно - погуглите)
Закрываем: fclose(fin);
Yandex
Объявления
18.11.2010, 19:41     Запись массива в dat файл
Ответ Создать тему
Опции темы

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