求助!数据删除不成功怎么办?
先读取文件,把他放进数组里,输入学号或姓名找到你要删除的学生?
然后将剩下的数据重新写进文件里,但是删除不成功怎么办啊。。。。
#include
#include
#include
#include
#define len sizeof(struct stu)
struct stu //定义链表学生信息结构体
{
char num[11]; //学号
char name[20]; //姓名
char sex[3]; //性别
float yw,sx,yy,wl,ty; //5门成绩
float score; //总分
float average; //平均分
int rank; //名次
struct stu *next;
}stu;
void Delete();
int main()
{
Delete();
return 0;
}
void Delete()
{
struct stu aa[50];
FILE *fp1;
int i=0,j,flag=0,f;
char Scanf[20];
system("cls");
system("color F9");
system("mode con cols=90 lines=30");
printf("\n --------------删除学生信息--------------\n");
printf(" 请输入需要删除的学生的【姓名】或【学号】:");
scanf("%s",Scanf);
getchar();
printf(" --------------------------------------------------------------\n");
printf(" 学 号 姓 名 性别 语文 数学 英语 物理 体育\n");
if((fp1=fopen("student.txt","r"))==NULL)//读取方式打开文件
{
printf("学生基本信息读取失败!");
}
while(fscanf(fp1,"%s %s %s %f %f %f %f %f",aa[i].num,aa[i].name,aa[i].sex,&aa[i].yw,&aa[i].sx,&aa[i].yy,&aa[i].wl,&aa[i].ty)!=EOF)
{
if(strcmp(Scanf,aa[i].num)==0 || strcmp(Scanf,aa[i].name)==0)
{
printf(" --------------------------------------------------------------\n");
printf(" %-12s %-10s %-3s %-6.1f %-6.1f %-6.1f %-6.1f %-6.1f\n",aa[i].num,aa[i].name,aa[i].sex,aa[i].yw,aa[i].sx,aa[i].yy,aa[i].wl,aa[i].ty);
flag=1;
}
i++;
}
printf(" --------------------------------------------------------------\n");
if(flag==0)
{
printf("\n 没有找到姓名或学号为【%s】的学生!\n",Scanf);
}
else
{
printf("\n 确认删除输入【1】,放弃删除输入【0】:");
scanf("%d",&f);
getchar();
if(f==1)
{
fp1=fopen("sudent.txt","w");
for(j=0;j
{
if(strcmp(Scanf,aa[j].num)!=0 || strcmp(Scanf,aa[j].name)!=0)
{
fprintf(fp1,"%s %s %s %5.1f %5.1f %5.1f %5.1f %5.1f\n",aa[j].num,aa[j].name,aa[j].sex,aa[j].yw,aa[j].sx,aa[j].yy,aa[j].wl,aa[j].ty);
}
}
printf("\n 删除成功!\n\n");
}
else
{
printf("\n 你已放弃删除该学生的成绩信息!\n");
}
}
fclose(fp1);
}