帮帮忙吧,这问题困扰我很久了
二进制读写出了问题,执行的时候不知怎么的,好像文件名不小心变成空的,然后就出错了。。。帮忙看看吧,我在论坛只有这点分了,全部奉上。。if((fp=fopen(filename,"rb"))==NULL)
{
printf("无法打开文件:%s",filename);
return 0;
}
fseek(fp,-sizeof(struct student), SEEK_END); //读出数据总量
fread(&temp_date,sizeof(struct student), 1, fp);
date_sum=temp_date.flag;
rewind(fp);
for(i=0; i<date_sum; i++)//读数据
{
if(fread(&stu[i], sizeof(struct student), 1, fp)==NULL)
printf("error");
}
fclose(fp);
if((fp=fopen(filename,"wb"))==NULL)
{
printf("无法打开文件:%s",filename);
return 0;
}
for(i=0; i<date_sum; i++)
{
if(choose=='1')
{
for(j=0; j<index; j++)
{ if(dele_num[j]!=stu[i].num)//不是要删除的就写进文件
{
stu[i].flag=stu[i].flag-done; //同步记录flag的值
if(fwrite(&stu[i], sizeof(struct student), 1, fp)!=1) //二进制读写
{
printf("error!");
fclose(fp);
}
}
else
{
dele_stu[m++]=stu[i];
date_sum--;//同步记录数据
done++;
}
}
}
if(choose=='2')
{
for(j=0; j<index; j++)
{
if(strcmp(stu[i].name, dele_name[j])!=0)
{
stu[i].flag=stu[i].flag-done; //同步记录flag的值
if(fwrite(&stu[i], sizeof(struct student), 1, fp)!=1) //二进制读写
{
printf("error!");
fclose(fp);
}
}
else
{
dele_stu[m++]=stu[i];
date_sum--;//同步记录数据
done++;
}
}
}
}
fclose(fp);