c
int i=0,len,k=-1/*k<0是为后面if判断用的*/。
system("cls")。
printf("\n 输入要删除的学生姓名: ")。scanf("%s",name)。
if((fp=fopen("student.dat","rb+"))==NULL)
{printf(" can't open file!\n")。exit(0)。}
while(!feof(fp))
{
删除:输入学生姓名,若该学生存在,则删除,并显示删除后余下的学生成绩信息void dele()
{
student xs[N]。
FILE *fp。
char name[10]。
int i=0,len,k=-1/*k<0是为后面if判断用的*/。
system("cls")。
printf("\n 输入要删除的学生姓名: ")。scanf("%s",name)。
if((fp=fopen("student.dat","rb+"))==NULL)
{printf(" can't open file!\n")。exit(0)。}
while(!feof(fp))
{
fread(&xs[i],sizeof(stu),1,fp)。
if(feof(fp)) break。
if(strcmp(xs[i].name,name)==0) k=i。
i++。
}
fclose(fp)。
//以下是删除后重新写文件
len=i。/*结构体数组上限*/
if(k>=0)/*k>0说明找到删除学生位置*/
{
if((fp=fopen("student.dat","wb+"))==NULL)
{printf(" can't open file!\n")。exit(0)。}
for(i=0。i<len。i++)
{
if(i==k) continue。/*从这个位置开始写入*/
fwrite(&xs[i],sizeof(stu),1,fp)。
}
fclose(fp)。
}
else {printf("\n 删除失败!!!\n")。getch()。} /*失败后重新返回菜单*/
printf("\n 按任意键返回主菜单 ")。
print()。
}
//菜单选择