#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#define FNAME "db.dat"
struct toy
{
char name[10];
float cena;
int num;
float vozr_min,vozr_max;
toy *next;
};
toy *add_it(toy *beg,toy *it) //vstavka elementa v spisok
{
toy *begin=NULL;
if(beg==NULL) //novii spisok
{
beg=it;
it->next=NULL;
return beg;
}
else
{
if(it->cena <beg>cena) //v nachalo
{
it->next=beg;
return it;
}
else
{
begin=beg;
while(!(beg->cena <it>cena && it->cena <beg>next->cena) &&
beg->next!=NULL)
{
beg=beg->next;
}
if(beg->next==NULL) // v konec
{
beg->next=it;
it->next=NULL;
return begin;
}
else // v serediny
{
it->next=beg->next;
beg->next=it;
return begin;
}
}
}
}
toy *read_file(char *filename) // chtenie faila
{
FILE *in=fopen(filename,"rb");
int i=0;
toy *beg=NULL,t;
if(in!=NULL)
{
while(!feof(in))
{
if(fread(&t,sizeof(t),1,in))
{
beg=add_it(beg,&t);
i++;
}
}
fclose(in);
n=i;
return beg;
Borland C++3.1: Проблема с функцией
Суть в том, что функция неправильно возврщает указатель.
Цитата:
Часть кода:
Код:
здесь *beg={"medved", 23.0, 5, 1.0, 13.0, NULL}
Код:
}
else return 0;
}
void main()
{
. . . . . . . .
. . . . . . . .
toy *list=read_file(FNAME);
. . . . . . . .
}
else return 0;
}
void main()
{
. . . . . . . .
. . . . . . . .
toy *list=read_file(FNAME);
. . . . . . . .
}
здесь *list={"medved", 23.0, 5, 1.102043e-39, 1.681558e-44, DS:000C}
Как решить проблему?
(танец с бубном не помог :( )