Чтение структуры из файла C++

01.01.2001

Чтение структуры из файла C++
Односвязный список, указатель след.
struct Telefstans
{
char Nomer[30];
char Familia[20];
char Adress[20];
char Nal_block[20];
char Zadoljenost[20];
struct Telefstans *next;
} ;

struct Telefstans *NahSpis=NULL;

....
....
....

Если сохранял так

void saveall()
{
FILE *file;
struct Telefstans *tek,*r;
file=fopen("1.bin","wb");
tek=NahSpis;
while(tek!=0)
{
fwrite(tek,sizeof(Telefstans),1,file);
tek=tek->next;
}
fcloseall();
puts("rezervniy file sozdan");
getch();
}

Вопрос:
То как прочитать теперь это? )

Эта функция читает не правильно) как не крутил, как не менял, не пойму что не так
void loadall()
{
FILE *file;
file=fopen("1.bin","rb");
struct Telefstans *tek;
tek=new Telefstans;
while(fread(tek,sizeof(Telefstans),1,file)!=0)
{
if (NahSpis!=NULL)
{ NahSpis=NahSpis->next; NahSpis=tek; }
else NahSpis=tek;
tek=new Telefstans;
}
delete tek;
fclose(file);
}

К примеру сохранял структуру
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4

В итоге читает 4 4 4 4 4.

  • не пробывал раздельно данные из структуры записывать\читать!? ? это тебе не ассемблер, где к структуре можно относится как к массиву байт\слов\двойных слов!
  • попробуйте считать в цикле for!
    естественно уже без while

Вас заинтересует