информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Китайский прорыв из ESXi 
 С наступающим 
 libmdbx => MithrilDB 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Как записать/загрузить данные из структуры в файл? 11.12.01 15:04  
Автор: Yuri Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Есть вот такая структурка
struct BaseStr
{
AnsiString Stroka1;
AnsiString Stroka2;
AnsiString Stroka3;
AnsiString Stroka4;
.............................
AnsiString StrokaN;
}
обьявлена она как
BaseStr Base[10];
Как записать в файл а потом загрузить эту структуру?

Я пробовал вот так:
Save:
FILE *out;
long Dimsize=sizeof(BaseStr)*10;

out=fopen(NameFile, "wb");
fwrite(Base, Dimsize, 1, out);
fclose (out);

Load:
FILE *in;

in=fopen(NameFile, "rb");
fread(Base, (sizeof(BaseStr)*10), 1, in);
fclose (in);

но ничего не получилось, записывается и читается какойто мусор, хотя в случае когда вместо AnsiString-ов в структуре int, float.... все работает
Плиз помогите начинающему програмеру.
[C++] Как записать/загрузить данные из структуры в файл? 11.12.01 18:05  
Автор: ih8u <i hate you> Статус: Member
<"чистая" ссылка>
Юзай char массивы заместо анси стринг,
и вроде ты не правильно вызываешь fread и fwrite
Смари:

typedef struct
{
char buf[0x100];
int i;
}Data. *pData;

pData ptr = new Data;
ptr->i = 100;
strcpy(&ptr->buf[0], "String");

FILE * file;
file = fopen("C:\\Data.dat", "w+b");
fseek(file, 0, SEEK_SET);
fwrite(ptr, 1, sizeof(Data), file);
fclose(file);
delete ptr;

ptr = new Data;
file = fopen("C:\\Data.dat", "r+b");
fseek(file, 0, SEEK_SET);
fread(ptr, 1, sizeof(Data), file);
fclose(file);

printf("buf - %s\r\n", ptr->buf);
printf("i - \r\n", ptr->i);
delete ptr;

У меня работает без проблем!!
Ну сколько можно говорить ?! 11.12.01 15:22  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Нет строк в C ! Нет и все ! Забудь об этой дурацкой бейсикопаскалевской приблуде ! В С есть УКАЗАТЕЛИ ! И занимают они ЧЕТЫРЕ байта !
Вот эти четыре байта ты и записваешь !
Каждую структуру где есть указатели надо сначало СЕРИАЛИЗОВАТЬ, а потом сбрасывать на диск (сеть и т.д.)
Дальше сам...

> Есть вот такая структурка
> struct BaseStr
> {
> AnsiString Stroka1;
> AnsiString Stroka2;
> AnsiString Stroka3;
> AnsiString Stroka4;
> .............................
> AnsiString StrokaN;
> }
> обьявлена она как
> BaseStr Base[10];
> Как записать в файл а потом загрузить эту структуру?
>
> Я пробовал вот так:
> Save:
> FILE *out;
> long Dimsize=sizeof(BaseStr)*10;
>
> out=fopen(NameFile, "wb");
> fwrite(Base, Dimsize, 1, out);
> fclose (out);
>
> Load:
> FILE *in;
>
> in=fopen(NameFile, "rb");
> fread(Base, (sizeof(BaseStr)*10), 1, in);
> fclose (in);
>
> но ничего не получилось, записывается и читается какойто
> мусор, хотя в случае когда вместо AnsiString-ов в
> структуре int, float.... все работает
> Плиз помогите начинающему програмеру.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach