void delet()
{
FILE *fp;
char s[10];
int i=0,n=0;
if((fp=fopen(filename,"r"))==NULL) //以2进制方式读取文件信息//
{
printf("cannot open the files\n");
system("pause");
return;
}
while(!feof(fp))
{
fread(&per[i],sizeof(person),1,fp); //将文件信息读取到数组内存中//
i++;n=n+1;
}
fclose(fp);
if((fp=fopen(filename,"w"))==NULL) //以2进制写入方式打开文件//
{
printf("cannot open the files\n");
system("pause");
return;
}
printf("学生学号:");
scanf("%s",s);
for(i=0;i<n-1;i++)
if(!(strcmp(per[i].num,s)==0)) //找到与其匹配的信息进行操作// 如果条件符合就写入否者跳过这组数据此数据就是所需删除的
fwrite(&per[i],sizeof(person),1,fp); //以2进制方式将信息从内存中写入文件磁盘//
fclose(fp);
printf("数据删除成功");
system("pause");
}
分成两个函数,一个读函数,一个写函数,然后调用
先从文件里读取记录信息到数组per[], 然后将与待删除学号不相同的记录重新写回文件,达到删除学生信息的目的。