#include #include #include #include #define M 100 void dele(){ typedef struct question{ char mainq[500]; char ala[150]; char alb[150]; char alc[150]; char ald[150]; char ans; }ques; char _m[20]="password"; char _n[20]; int z=3; while(z--) { printf("你还有%d次机会输入管理员密码:",z+1); scanf("%s",_n); printf("\n"); if(strcmp(_m,_n)==0) { FILE *fp,*fp2; int flag=0,n,jud,i; system("cls"); char q[500]; ques que[M]; fp=fopen("question.dat","ab+"); if(fp==NULL) { printf("文件处理失败"); return ; } jud=flag=0; printf("请输入您想删除的试题的完整题干:\n"); scanf("%s",q); for(i=0;fread(&que[i],sizeof(ques),1,fp)==1;i++) { if(strcmp(q,que[i].mainq)==0) { printf("该题目前状态如下:\n"); printf("%s\n",que[i].mainq); printf("A.%s\n",que[i].ala); printf("B.%s\n",que[i].alb); printf("C.%s\n",que[i].alc); printf("D.%s\n",que[i].ald); printf("正确选项:%c\n",que[i].ans); flag=1; fclose(fp); fp2=fopen("que2.dat","wb"); fp=fopen("question.dat","rb"); break; } } if(flag) { for(i=0;fread(&que[i],sizeof(ques),1,fp)==1;i++){ if(strcmp(q,que[i].mainq)!=0) fwrite(&que[i],sizeof(ques),1,fp2);}//把除要删除的试题外的所有试题复制给另外一个文件,再把另外一个文件复制回来 fclose(fp); fclose(fp2); fp=fopen("question.dat","wb"); fp2=fopen("que2.dat","rb"); for(i=0;fread(&que[i],sizeof(ques),1,fp2)==1;) { fwrite(&que[i],sizeof(ques),1,fp); i++; } fclose(fp); fclose(fp2); printf("\t\t\t\t成功删除该试题"); } else { fclose(fp); printf("\t\t\t\t未找到该试题"); } break; } } return ; }