这个删除学生信息的函数原理是什么(希望可以用简洁的语言将这个代码表达出来)

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[], 然后将与待删除学号不相同的记录重新写回文件,达到删除学生信息的目的。