Главная / FAQ по Builder'у / 79 Как сохранить массив или...

79 Как сохранить массив или структуру в бинарный файл?


Вот 2 примера на сохранение простого массива и структуры посложнее.
========================
  int src[5] = {1, 2, 3, 4, 5}; // исходный массив
  int dest[5] = {0,0,0,0,0};    // сюда пишем
  // заливаем в файлос, закрываем, открываем повторно
  FILE *f = fopen("myarray.bin", "wb+");
  if(f){
    for(int i=0; i < 5; i++){
      fwrite(&src[i], sizeof(src[i]), 1, f);
    }
    fclose(f);
  }
  f = fopen("myarray.bin", "rb+");
  // типа для подсчета размера файлоса
  long curpos, length;
  curpos = ftell(f);
  fseek(f, 0L, SEEK_END);
  length = ftell(f);
  fseek(f, curpos, SEEK_SET);
  // заливаем в массив
  if(f){
    for(int i=0; i < ARRAYSIZE(dest); i++){
      fread(&dest[i], sizeof(dest[0]), 1, f);
    }
    fclose(f);
  }
  /*
    сохранение структуры
  */
  struct tagMyStruc{
    char one[1];
    char two[5];
    int three[1];
    char four[5];
  };
  tagMyStruc src2 = {"я", "купил", 2, "носка"};
  f = fopen("myarray2.bin", "wb+");
  if(f){
    fwrite(&src2, sizeof(src2), 1, f);
  }
  fclose(f);
  //
  f = fopen("myarray2.bin", "rb+");
  // типа для подсчета размера файлоса
  curpos = ftell(f);
  fseek(f, 0L, SEEK_END);
  length = ftell(f);
  fseek(f, curpos, SEEK_SET);
  // заливаем в структуру
  tagMyStruc dest2;
  if(f){
    fread(&dest2, sizeof(dest2), 1, f);
    fclose(f);
  }
==================================
В принципе, объявляя структуры, можно сохранять сколь угодно сложные бинарики где угодно - в файлах, БЛОБах, и т.п. Объявив структуру в отдельном H-файлосе как тип, и подсоединяя его к разным проектам, будешь спокойно передавать бинарные структуры между разными прогами.
Валерий Куликов

Предыдущий вопрос   |  Список вопросов   |   Следующий вопрос

источник      На главную      by jenyok
Copyright © 2003 JTSOFT
Сайт управляется системой uCoz