代码如下:
sruct SaleInfo_node *saleread() /*读取销售信息文件*/
{
struct SaleInfo_node *p0,*p1=0,*p2;
FILE *fp;
fp=fopen("Sale_information.dat","rb");
if (fp==NULL)
{
printf("Cannot open file Product_information.dat!\n");
exit(0);
}
else
{
p2=p0=(struct SaleInfo_node *)malloc(LENA);
while (!feof(fp))
{
if (fread(p0,LEN,1,fp))
{
if (p0!=NULL)
{
p1=(struct SaleInfo_node *)malloc(LENA);
p0->next=p1;
p0=p1;
}
}
}
free(p1);
fclose(fp);
return(p2);
}
}
附代码图片
运行后在正常数据后会多出一个节点的数据,数据为随机值,就像这样
刚学链表,被这个问题捆住了= =请问大神怎么把最后那个空节点抹掉呢?
sruct SaleInfo_node *saleread() /*读取销售信息文件*/
{
struct SaleInfo_node *p0,*p1=0,*p2;
FILE *fp;
fp=fopen("Sale_information.dat","rb");
if (fp==NULL)
{
printf("Cannot open file Product_information.dat!\n");
exit(0);
}
else
{
p2=p0=(struct SaleInfo_node *)malloc(LENA);
while (!feof(fp))
{
if (fread(p0,LEN,1,fp))
{
if (p0!=NULL)
{
p1=(struct SaleInfo_node *)malloc(LENA);
p0->next=p1;
p0=p1;
}
}
}
free(p1);
fclose(fp);
return(p2);
}
}
附代码图片
运行后在正常数据后会多出一个节点的数据,数据为随机值,就像这样
刚学链表,被这个问题捆住了= =请问大神怎么把最后那个空节点抹掉呢?