c语言帮忙改一下错

来源:百度知道 编辑:UC知道 时间:2024/04/27 19:57:05
#include"stdio.h"
struct list
{
int sale;
int goods;
int in;
}lis[5];
save()
{
FILE *fp;
int i;
printf("please input 5 lists\n");
for(i=0;i<5;i++)
{
{scanf("%d%d%d",&lis[i].sale,&lis[i].goods,&lis[i].in);
}
if((fp=fopen("c:\\abc","wb"))==NULL)
{printf("cannot open\n");
return;
}

if(fwrite(&lis[i],sizeof(struct list),1,fp)!=1)
printf("open error\n");
fclose(fp);
}
}
display()
{
FILE *fp;
int i;
if((fp=fopen("c:\\abc","rb"))==NULL)
{printf("cannot open\n");
return;
}
for(i=0;i<5;i++)
{ fread(&lis[i],sizeof(struct list),1,fp);
printf("%d%d%d\n",lis[i].sale,lis[i].goods,

关键错误在于save()函数中不能把fopen放在循环内,这样会导致每次循环都打开一次文件,因此出错。

改好的程序如下:
#include <stdio.h>
#include <conio.h>
#include <process.h>

struct list
{
int sale;
int goods;
int in;
}lis[5];
void save()
{
FILE *fp;
int i;
printf("please input 5 lists\n");
if((fp=fopen("c:\\abc","wb"))==NULL)
{
printf("cannot open\nPress any key to continue....");
getch();
return;
}
for(i=0;i<5;i++)
{
{
scanf("%d%d%d",&lis[i].sale,&lis[i].goods,&lis[i].in);
}
if(fwrite(&lis[i],sizeof(struct list),1,fp)!=1)
{
printf("Write error\nPress any key to continue....");
getch();
fclose(fp);
return;
}
}
fclose(fp);
}

void display()
{
FILE *fp;
i