一个简单图书管理系统两个函数,单独使用都没有问题,但是当调用完第一个函数之后再调用第二个,中间的while (fgets(buf2, 1000, fp2))就直接跳过了,也不知道是什么问题
/*-----------新增图书函数------------*/
void add()
{
FILE *fp;
int i,confirm,n;
printf("\t\t|------------------新增图书书目---------------------|\n");
printf("要新增书的数量(不超过100):");
scanf("%d",&numb);
for(i=num;i<numb+num;i++)
{
printf("\t\t请输入序号:");
scanf("%d",&b[i].ID);
printf("\n");
printf("\t\t请输入书名:");
scanf("%s",b[i].bookname);
printf("\n");
printf("\t\t请输入作者名:");
scanf("%s",b[i].writer);
printf("\n");
printf("\t\t请输入出版社:");
scanf("%s",b[i].company);
printf("\n");
printf("\t\t请输入年份:");
scanf("%d",&b[i].year);
printf("\n");
printf("\t\t请输入月份:");
scanf("%d",&b[i].month);
printf("\n");
printf("\t\t请输入价格:");
scanf("%d",&b[i].price);
printf("\n");
}
printf("输入完成是否保存?保存请输入1,不保存请输入0:");
scanf("%d",&confirm);
if(confirm==1)
{
saveall();
}
return ;
}
/*----------------------输出所有书目信息-------------------*/
void printall()
{
int number=0,i=0;
FILE *fp2;
bookinf c[10000];
char buf2[1000];
fp2 = fopen("D:\book.txt", "r"); // 打开文件
if (!fp2) // 判断是否打开成功
{
perror("读取文件失败");
return 0;
}
while (fgets(buf2, 1000, fp2))
number+=1; // 累计行数
fclose(fp2);
fp2= fopen("D:\book.txt", "r"); // 打开文件
if(fp2==NULL)
{
perror("读取文件失败");
return 0;
}
memset(c,0X0,sizeof(c));
while (fp2)
{
fscanf(fp2,"%d%s%s%s%d%d%d",&c[i].ID,c[i].bookname,c[i].writer,c[i].company,&c[i].year,&c[i].month,&c[i].price);
if(ferror(fp2))
{
fclose(fp2);
perror("读文件失败");
}
if(i==number)
{
break;
}
i++;
}
fclose(fp2);
for(i=0;i<number;i++)
{
printf("序号:%d,书名:%s,作者:%s,出版社:%s,日期:%d年%d日,价格:%d元\n",c[i].ID,c[i].bookname,c[i].writer,c[i].company,c[i].year,c[i].month,c[i].price);
}
}