user-0 提问: 文件一直保存不了 急

回复:
user: user-1
content: #include<stdio.h> #include<stdlib.h> #include<string.h> //#include<conio.h>  /*包含头文件*/  /**定义结构体**/ struct student {     char name[20];     char num[30];     char sex[2];     int th; }stu[10]; /*定义结构体数组*/  /*自定义函数的声明*/ void menu(); void select(); void check(); void manage(); void input(); void save(); void search(); void modify(); void calculate(); void quit(); /**全局变量**/ FILE*fp; /**主函数**/ int main() {     int i=1;     stu[0].th=0;     stu[1].th=0;     stu[2].th=0;     stu[3].th=0;     stu[4].th=0;     stu[5].th=0;     stu[6].th=0;     stu[7].th=0;     stu[8].th=0;     stu[9].th=0;     menu();     while (i!=0) {         select ();         //if(i!='n')             menu();     } } /**目录函数**/ void menu () {     printf("\t\t*****\n");     printf("      欢迎使用学生考勤系统\n");     printf("       本科课程共四节\n");     printf("       1.学生每日签到\n");     printf("       2.学生信息管理系统\n");     printf("       3.考勤评定分数\n");     printf("       4.退出考勤系统\n");     printf("*请选择相应的数字*\n");     printf("\t\t*****\n"); } /*选择函数*/ void select() {     int m;     scanf("%d",&m);     switch(m)     {         case 1:check();break;         case 2:manage();break;         case 3:calculate();break;         case 4:quit();break;         default:printf("输入错误请重新输入\n");     } /*条件选择*/ } /*签到函数*/ void check() {     int i,n;     char no[30];     system("cls");     printf("请输入学号:\n");     scanf("%s",no);     //for(i=0;i<10;i++);    //多一个分号;     for(i=0;i<10;i++)     {         if(strcmp(no, stu[i].num)==0)         {             stu[i].th++;             printf("签到成功！\n");             printf("请输入考勤系统功能数字:\n");             n = 5;         }     }     if (n!=5)         printf("查无此人\n");     save(); } /**信息管理函数**/ void manage() {     int a,i=1;     system("cls");     printf("\n");     printf("\t\t **\n");     printf("\t\t\t学生信息管理系统\n");     printf("1.添加学生信息\n");     printf("2.查询学生信息\n");     printf("3.修改学生信息\n");     printf("4.退出学生信息管理系统\n");     printf("\t\t**\n");     scanf("%d",&a);     while(i!=0)     {if (a<=3&&a>=0)         {             switch(a)             {                 case 1:input();break;                 case 2:search();break;                 case 3:modify();break;             }             printf("请输入信息管理功能数字\n");             scanf("%d", &a);         }         else if (a==4)         {             system("cls");             break;         }         else             printf("错误！请重新输入：\n");         scanf("%d",&a);     } } /**输入函数**/ void input() {     int i;     for (i=0;i<10;i++)     {         printf("请输入第%d位学生姓名:\n",i+1);         scanf("%s",stu[i].name);         printf("请输入学生学号:\n");         scanf("%s",stu[i].num);         printf("请输入学生性别(m:男生 f:女生):\n");         scanf("%s",stu[i].sex);     }     save(); } /**查询函数**/ void search() {     int i,n;     char no[30];     printf("请输入要查找的学生学号:\n");     scanf("%s",no);     for(i=0;i<10;i++)     {         if(strcmp(no,stu[i].num)==0)         {             printf("学生的基本信息：%-5s,%-5s,%-3s\n\n",stu[i].name,stu[i].num,stu[i].sex);             n=5;         }     }     if (n!=5)         printf("查无此人\n"); } /**保存函数**/ void save() {     int i;     FILE*fp;     fp=fopen("stu.txt","wb");     //if ((fp=fopen("stu.list","wb"))==NULL);    //多一个分号     if ((fp=fopen("stu.list","wb"))==NULL)     {         printf("can not open file\n");         exit(0);     }     for(i=0;i<10;i++)         if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)             printf("file write error\n");     fclose (fp);     printf("已保存\n"); } /**修改函数**/ void modify() {     int i,j,c;     char k[30];     FILE *fp;     if((fp=fopen("stu.txt","rb"))==NULL)     {         printf("can not open file\n");         return;     }     printf("\n请输入要修改的学生的学号:");     scanf("%s",k);     for(i=0;i<10;i++)     {         fread(&stu[i],sizeof(struct student),1,fp);         for (j=0;j<10;j++)         {             if (strcmp (k,stu[i].num)==0)             c = i;             //fclose (fp);             break;         }     }     fclose(fp);     printf("请输入新修改的内容:\n");     printf("请输入学生姓名：\n");     scanf("%s",stu[c].name);     printf("请输入学生学号:\n");     //scanf("%d",stu[c].num);     scanf("%s",stu[c].num);     printf("请输入学生性别\n");     scanf("%s", stu[c].sex);     save(); } /*考勤评定函数*/ void calculate() {     int i;     system("cls");     printf("课程参考考勤评分如下\n");     for(i=0;i<10;i++)     {         //printf("学号:%s 姓名%s 分数%d,stu[i].num,stu[i].name,stu[i].th*25");         printf("学号:%s 姓名%s 分数%d",stu[i].num,stu[i].name,stu[i].th*25);         printf("\n");     }     printf("请输入考情系统功能数字:\n\n"); }  /**退出函数**/ void quit() {     printf("\n");     printf("\n");     printf("\t\t\t谢谢使用本系统！\n");     printf("\t\t\t ** 再见**\n");     printf("\t\t 制作人邱哲宇\n");     exit(0); } 供参考～  代码有多处问题，建议对比找一下原因～