Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[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.... все работает > Плиз помогите начинающему програмеру.
|
|
|