user-0 提问: 学生成绩系统读取功能无法正常读取

回复:
user: user-0
content: 引用 1 楼 自信男孩 的回复: 太感谢了  可以请问以下是哪出错了吗  我对比了一下还是看不太出来

user: user-1
content: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> //#include <windows.h> #define MAX_COUNT 100  typedef struct {     char num[20];//学号     char name[20];//姓名     float score_yuwen;//语文成绩     float score_shuxue;//数学成绩     float score_yingyu;//英语成绩     float score_wuli;//物理成绩     float score_huaxue;//化学成绩 } Student;  Student stu[MAX_COUNT]; int total=0;  void clear_enter() { //清理回车     char mistake[20];     gets(mistake); }  void return_menu() {     printf("按回车键返回主菜单...\n");     clear_enter(); }  void add_Student() { //录入学生信息     int i;     printf("请输入学生成绩信息：\n");     printf("学号  姓名  语文  数学  英语  物理  化学\n");     scanf("%s%s%f%f%f%f%f",stu[total].num,stu[total].name,&stu[total].score_yuwen,&stu[total].score_shuxue,&stu[total].score_yingyu,&stu[total].score_wuli,&stu[total].score_huaxue);     //clear_enter();   //这次不需要清楚回车呢     printf("学生成绩信息录入中...\n");     //sleep(1);     printf("学生成绩信息已录入\n");     total++; }  void show_student() { //展示查看学生信息     int i;     printf("学号  姓名  语文  数学  英语  物理  化学\n");     for(i=0; i<total; i++)     {         printf("%s  %s  %.f  %.f  %.f  %.f  %.f\n",stu[i].num,stu[i].name,stu[i].score_yuwen,stu[i].score_shuxue,stu[i].score_yingyu,stu[i].score_wuli,stu[i].score_huaxue);     } }  void search_name() { //根据姓名查找学生成绩信息     int i;     char name[20];     system("cls");     printf("请输入要查询的学生的姓名:");     //scanf("%s",&name);     scanf("%s", name);     for(i=0; i<total; i++)     {         if(strcmp(name,stu[i].name)==0)         {             printf("学号；%s\n",stu[i].num);             printf("姓名；%s\n",stu[i].name);             printf("语文；%.f\n",stu[i].score_yuwen);             printf("数学；%.f\n",stu[i].score_shuxue);             printf("物理；%.f\n",stu[i].score_wuli);             printf("化学；%.f\n",stu[i].score_huaxue);         } else             printf("学生姓名不存在...\n");         //clear_enter();    //这里哪有回车呢？     } }  void search_num() { //根据学号查找学生成绩信息     char num[20];     int j;     system("cls");     printf("请输入要查询的学生的学号：");     //scanf("%s",&num);     scanf("%s", num);     for(j=0; j<total; j++)     {         if(strcmp(num,stu[j].num)==0)         {             printf("学号；%s\n",stu[j].num);             printf("姓名；%s\n",stu[j].name);             printf("语文；%.f\n",stu[j].score_yuwen);             printf("数学；%.f\n",stu[j].score_shuxue);             printf("英语：%.f\n",stu[j].score_yingyu);             printf("物理；%.f\n",stu[j].score_wuli);             printf("化学；%.f\n",stu[j].score_huaxue);         }         else         {             printf("学生学号不存在：\n");         }     }     //clear_enter();   //这里也不需要清楚，如果是遇到gets或scanf("%c", &xx);的时候在考虑清除回车 }  void search_student() {     int i;     system("cls");     printf("1按姓名查找：\n");     printf("2按学号查找: \n");     scanf("%d",&i);     switch(i)     {         case 1: {                     search_name();                     break;                 }         case 2: {                     search_num();                     break;                 }     } }  void change_student() {     int i;     printf("输入要修改信息的学生学号：\n");     char num[20];     //scanf("%s",&num);     scanf("%s", num);     for(i=0; i<total; i++)         if(strcmp(num,stu[i].num)==0) {             while(i<total) {                 stu[i]=stu[i+1];                 i++;             }             total-=1;         }     printf("请输入新的学生成绩信息：\n");     printf("学号  姓名  语文  数学  英语  物理  化学\n");     scanf("%s%s%f%f%f%f%f",stu[total].num,stu[total].name,&stu[total].score_yuwen,&stu[total].score_shuxue,&stu[total].score_yingyu,&stu[total].score_wuli,&stu[total].score_huaxue);     //clear_enter();     printf("学生成绩信息修改中...\n");     //sleep(1);     printf("修改成功\n");     total++;  }  void del_student() { //根据学号删除学生成绩信息     int i;     printf("输入要删除信息的学生学号：\n");     char num[20];     //scanf("%s",&num);     scanf("%s", num);     for(i=0; i<total; i++)         if(strcmp(num,stu[i].num)==0) {             while(i<total) {                 stu[i]=stu[i+1];                 i++;             }             total-=1;         }     clear_enter();     printf("学生成绩正在删除\n");    // sleep(1);     printf("学生成绩已删除\n"); }  void num_sort() { //按学生学号进行排序     int i,j;     Student stu_temp;     for(i=0; i<total; i++)     {         for(j=0; j<total-1-i; j++)         {             if(stu[j].num>stu[j+1].num)             {                 stu_temp=stu[j];                 stu[j]=stu[j+1];                 stu[j+1]=stu_temp;             }         }     }     printf("排序后的结果：\n");     printf("学号  姓名  语文  数学  英语  物理  化学\n");     for(i=0; i<total; i++)     {         printf("%s  %s  %.f  %.f  %.f  %.f  %.f\n",stu[i].num,stu[i].name,stu[i].score_yuwen,stu[i].score_shuxue,stu[i].score_yingyu,stu[i].score_wuli,stu[i].score_huaxue);     } }  void save_student() {     system("cls");     int i,n;     FILE *fp;     if ((fp = fopen("chengji.txt", "wb")) == NULL)     {         printf("无法打开学生信息文件！\n");         exit(1);     }     printf("\n正在保存...\n");     fprintf(fp, "%d",total);     fprintf(fp, "\r\n");     for (i = 0; i <total; i++)     {         fprintf(fp, "%s %s %.f %.f %.f %.f %.f",stu[i].num,stu[i].name,stu[i].score_yuwen,stu[i].score_shuxue,stu[i].score_yingyu,stu[i].score_wuli,stu[i].score_huaxue);         fprintf(fp, "\r\n");     }     fclose(fp);     //Sleep(1);     system("cls");     printf("*****保存成功*****\n"); }  int load_student() {     int i;     FILE *fp;     system("cls");     if ((fp = fopen("chengji.txt", "rb")) ==NULL)     {         printf("无法打开学生信息文件!\n");         exit(1);     }     fscanf(fp, "%d", &total);     for (i = 0; i <total; i++)     {         //fscanf(fp, "%s %s %.1f %.1f %.1f %.1f %.1f", stu[i].num,stu[i].name,stu[i].score_yuwen,stu[i].score_shuxue,stu[i].score_yingyu,stu[i].score_wuli,stu[i].score_huaxue);         fscanf(fp, "%s %s %f %f %f %f %f\r\n", stu[i].num, stu[i].name, &stu[i].score_yuwen, &stu[i].score_shuxue, &stu[i].score_yingyu, &stu[i].score_wuli, &stu[i].score_huaxue);     }     fclose(fp);     system("cls");     printf("成功加载学生信息到内存中!\n");     //return;     return 0; }  void menu() {     system("color b9");     printf("-------------学生成绩管理系统-------------\n");     printf("            1.增加学生成绩信息            \n");     printf("            2.查看学生成绩信息            \n");     printf("            3.修改学生成绩信息            \n");     printf("            4.删除学生成绩信息       \n");     printf("            5.查找学生成绩信息            \n");     printf("            6.对学生信息进行排序            \n");     printf("            7.保存学生信息为文件            \n");     printf("            8.从文件中读取学生信息            \n");     printf("            9.退出系统            \n");     printf("                                  \n");     printf("请输入您的选择[1-9]并按回车");     return; }  int main() {     char tmp[20];     while(1) {         system("cls");         menu();         int sel;         scanf("%d",&sel);         gets(tmp);         switch(sel) {             case 1:                 {                     add_Student();                     break;                 }             case 2:                 {                     show_student();                     break;                 }             case 3:                 {                     change_student();                     break;                 }             case 4:                 {                     del_student();                     break;                 }             case 5:                 {                     search_student();                     break;                 }             case 6:                 {                     num_sort();                     break;                 }             case 7:                 {                     save_student();                     break;                 }             case 8:                 {                     load_student();                     break;                 }             case 9:                 {                     printf("退出系统");                     exit(0);                 }         }         printf("按任意键回车继续...\n");         gets(tmp);     }     return 0; } 供参考～  测试一下试试～

user: user-0
content: 引用 3 楼 自信男孩 的回复:[quote=引用 2 楼 kuangyehuanghua 的回复:] [quote=引用 1 楼 自信男孩 的回复:] 太感谢了  可以请问以下是哪出错了吗  我对比了一下还是看不太出来 [/quote] 那就仔细对比一下～[/quote]找到原因了%f输入时不能指定精度，另外忘加地址符了哈哈~谢谢大佬！！

user: user-1
content: 引用 2 楼 kuangyehuanghua 的回复:[quote=引用 1 楼 自信男孩 的回复:] 太感谢了  可以请问以下是哪出错了吗  我对比了一下还是看不太出来 [/quote] 那就仔细对比一下～