c语言小问题,帮忙检查检查问题所在,没有办法实现正确的功能

main.c 
#include <stdio.h>
#include <stdlib.h>
//#include <conio.h>
#include <string.h>
#include <math.h>
#include "Header.h"




int main()
{
    stStu stu[N];

    int choice = 0; /*select and store menu item  */
    int arrayLength=0;
    char stuName[20];

    /*====验证用户的口令,直到正确为止====*/
    while (!Login())
    {
        printf("用户名或者密码错误,请重新输入!\n");
    }

    //arrayLength=readFromFile(stu);

    /*====根据用户的选择,执行相应的操作.====*/
    while(1)
    {

        displayMenu();

        printf("\n 请选择您的操作(1,2,3,4,5,0):\n");
        scanf("%d",&choice);

        switch(choice)
        {

            case 1:
                    arrayLength=inputInfo(stu,N);
                    printf("\n现有%d个学生信息\n",arrayLength);
                    break;
            case 2:

                    if(arrayLength==0)
                        printf("系统中没有学生信息,请先初始化!\n\n");
                    else
                        outputInfo(stu,arrayLength);
                    break;
            case 3:
                    printf("请输入欲查找的姓名:\n");
                    scanf("%s",stuName);
                    queryByName(stu,arrayLength,stuName);
                    break;
            case 4:
                    sortScore(stu,arrayLength);
                    outputInfo(stu,arrayLength);
                    break;
            case 5:
                    writeToFile(stu,arrayLength);
                    break;
            case 6:
                    arrayLength=readFromFile(stu);
                    break;
            case 0:
                    exit(0);
                    break;
        }
    }
    return 0;
}



Header.h
#ifndef Header_h
#define Header_h

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 10
#define FILENAME "student.txt"
struct Student
{
    int  number;
    char name[20];
    char sex;
    char cl;
    char major;
    float overall;
};
typedef struct Student stStu;

struct User
{
    char name[20];
    char password[20];
};
typedef struct User stUser;

int Login();
void displayMenu();
int inputInfo(stStu student[],int length);
void outputInfo(stStu student[],int length);
void queryByName(stStu student[],int length,char name[]);
void sortScore(stStu student[],int length);
void writeToFile(stStu student[],int length);
int readFromFile(stStu student[]);
stUser* loadUserInfor(stUser *userInfor,char *filename);
void saveUserInfor(stUser userInfor,char *filename);
#endif /* Header_h */





Header.c
#include "Header.h"
/*******************************************************
功能:显示菜单
参数:无
返回值:无
 *******************************************************/
 void displayMenu()
 {

        printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
        printf("+               学生成绩管理系统2.0                     +\n");
        printf("+                                                       +\n");
        printf("+                 1. 输入信息                           +\n");
        printf("+                 2. 输出信息                           +\n");
        printf("+                 3. 查找                               +\n");
        printf("+                 4. 排序                               +\n");
        printf("+                 0. 程序结束                           +\n");
        printf("+                                                       +\n");
        printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");

 }

/*******************************************************
功能:登陆函数,验证口令
参数:
参数1:n
  类型:char []
  说明:用户输入口令
返回值:1或0
  类型:int
  说明:1表示通过验证;0表示没有通过
 *******************************************************/
 int Login()
 {
     stUser currentUser,sysUser={'\0'};

     loadUserInfor(&sysUser,"user.dat");//写进去
     if (strlen(sysUser.name) == 0)
     {
         printf("输入用户名进行初始化:");
        gets(sysUser.name);
        printf("输入初始密码:");
        gets(sysUser.password);

        saveUserInfor(sysUser,"user.dat");//读出来
     }
     printf("输入登录信息\n");
     printf("用户名:");
     gets(currentUser.name);
     printf("密码:");
     gets(currentUser.password);

     if(strcmp(currentUser.name,sysUser.name)==0 && strcmp(currentUser.password,sysUser.password)==0)
       return 1;
     else
       return 0;
 }
  /*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
返回值:i
  类型:int
  说明:表示实际读取到的个数
 *******************************************************/
 int readFromFile(stStu student[])
 {
    FILE *fp=NULL;
    int i=0;

    fp=fopen(FILENAME,"rb");

    if(fp!=NULL)
    {

        while(!feof(fp))
        {

            if(i>=N)
                break;
            if(fread(student+i,sizeof(stStu),1,fp))
                i++;
        }

        fclose(fp);
    }
    return i;
}



int unique(stStu student[],int length,int stuNumber)
{
    int flag=1,i;
    for(i=0;i<length;i++)
    {
        if(student[i].number==stuNumber)
        {
            flag=0;
            break;
        }
    }
    return flag;
}
 /*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
参数2:length
  类型:int
  说明:表示实际数组的长度
返回值:i
  类型:int
  说明:表示增加信息后,实际数组的长度
 *******************************************************/
int inputInfo(stStu student[],int length)
{
    int i=0;
    float score;
    int endFlag=0;

    printf("请输入学生信息(学号为0时结束)\n");
    while (!endFlag && i<length)
    {

        fflush(stdin);

        printf("学号:");
        scanf("%d",&student[i].number);
        if (student[i].number==0)
        {
            endFlag=1;
        }
        if (endFlag==1)
            break;

        printf("姓名:");
        scanf("%s",student[i].name);

        printf("性别:");
        scanf("%c",student[i].sex);
        
        printf("班级:");
        scanf("%ld",student[i].cl);

        printf("专业:");
        scanf("%c",student[i].major);

        printf("综合成绩:");
        scanf("%f",&score);
        student[i].overall =score;

        i++;
    }

    return i;
}

 /*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
参数2:length
  类型:int
  说明:表示实际数组的长度
返回值:无
 *******************************************************/
void outputInfo(stStu student[],int length)
{
    int i=0;

    printf("%-4d %-10s %-10c %ld %-10c %-3f","学号","姓名","性别","班级","专业","综合成绩,\n\n");
    for(i=0;i<length;i++)
    {
        printf("%-4d %-10s %-10c %ld  %-10c %-3.1f",student[i].number,student[i].name,student[i].sex,student[i].cl,student[i].major,student[i].overall);

        printf("\n");
    }
    printf("\n\n");
}
 /*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
参数2:length
  类型:int
  说明:表示实际数组的长度
参数3:stuNum
  类型:int
  说明:表示要查找的学生的学号
返回值:无
 *******************************************************/
void queryByName(stStu student[],int length,char name[])
{
    int i=0;
    printf("%-4d %-10s %-10c %ld %-10c %-3s","学号","姓名","性别","班级","专业","综合成绩,\n");
    printf("------------------------------\n");
    for(i=0;i<length;i++)
    {
        if(strcmp(name,student[i].name)==0)
        {
            printf("%4d %-10s %-10c %ld %-10c %-4.1f\n",
                   student[i].number,student[i].name,student[i].sex,student[i].cl,student[i].major,student[i].overall);
            break;
        }
    }
    if(i>=length)
        printf("\n不存在!\n");
}
 /*=================================================================*/
 /*                        4:  function insert()                            */
 /*=================================================================*/
/*int insertInfo(STUDENT student[],int length,int arraylen)
{
     int i=len-1;

     printf("add xuehao,xingming,chengji end with xuehao=0\n");
     do
     {
        i++;

        printf("number=");
        scanf("%ld",&stud[i].number);

        if(stud[i].number==0)
        break;

        printf("name=");
        scanf("%s",stud[i].name);

        printf("score=");
        scanf("%d",&stud[i].score);
      }while(i<arraylen);

      return i;

  }*/



  /*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
参数2:length
  类型:int
  说明:表示实际数组的长度
返回值:无
 *******************************************************/
void sortScore(stStu student[],int length)
{

//    stStu s;

/*    for(i=0;i<length;i++)
    {
        k=i;
        for(j=i+1;j<length;j++)
            if(student[j].score>student[k].score)
                k=j;
         //  exchange i and k
        s.number = student[k].number;
        strcpy(s.name,student[k].name);
//        s.score=student[k].score;

        student[k].number =student[i].number;
        strcpy(student[k].name,student[i].name);
 //       student[k].score = student[i].score;

        student[i].number = s.number;
        strcpy(student[i].name,s.name);
        student[i].score = s.score;
    }*/

}
/*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
参数2:length
  类型:int
  说明:表示实际数组的长度
返回值:无
 *******************************************************/
void writeToFile(stStu student[],int length)
{
    FILE *fp=NULL;
    int i=0;

    fp=fopen(FILENAME,"wb");

    if(fp==NULL)
    {
        printf("打开文件出错!\n");
        exit(0);
    }

    for(i=0;i<length;i++)
        fwrite(student+i,sizeof(stStu),1,fp);

    fclose(fp);

}


void saveUserInfor(stUser userInfor,char *filename)
{
    FILE *fp=NULL;

    fp=fopen(filename,"wb");

    if(fp==NULL)
    {
        printf("打开文件出错!\n");
        exit(0);
    }
    fwrite(&userInfor,sizeof(userInfor),1,fp);

    fclose(fp);

}

stUser* loadUserInfor(stUser *userInfor,char *filename)
{
    FILE *fp=NULL;

    fp=fopen(filename,"rb");

    if(fp!=NULL)
    {
        fread(userInfor,sizeof(stUser),1,fp);

        fclose(fp);
    }

    return userInfor;
}
 /*******************************************************
  功能:主函数
  参数:无
  返回值:无
 *******************************************************/

 

 首先修改header中整个结构体

struct Student
{
    int  number;
    char name[32];
    char sex;
    char cl[32];
    char major[32];
    float overall;
};

 然后修改输入和显示


#include "Header.h"
/*******************************************************
功能:显示菜单
参数:无
返回值:无
 *******************************************************/
 void displayMenu()
 {
        printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
        printf("+               学生成绩管理系统2.0                     +\n");
        printf("+                                                       +\n");
        printf("+                 1. 输入信息                           +\n");
        printf("+                 2. 输出信息                           +\n");
        printf("+                 3. 查找                               +\n");
        printf("+                 4. 排序                               +\n");
        printf("+                 0. 程序结束                           +\n");
        printf("+                                                       +\n");
        printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
 }
/*******************************************************
功能:登陆函数,验证口令
参数:
参数1:n
  类型:char []
  说明:用户输入口令
返回值:1或0
  类型:int
  说明:1表示通过验证;0表示没有通过
 *******************************************************/
 int Login()
 {
     stUser currentUser,sysUser={'\0'};
     loadUserInfor(&sysUser,"user.dat");//写进去
     if (strlen(sysUser.name) == 0)
     {
         printf("输入用户名进行初始化:");
        gets(sysUser.name);
        printf("输入初始密码:");
        gets(sysUser.password);
        saveUserInfor(sysUser,"user.dat");//读出来
     }
     printf("输入登录信息\n");
     printf("用户名:");
     gets(currentUser.name);
     printf("密码:");
     gets(currentUser.password);
     if(strcmp(currentUser.name,sysUser.name)==0 && strcmp(currentUser.password,sysUser.password)==0)
       return 1;
     else
       return 0;
 }
  /*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
返回值:i
  类型:int
  说明:表示实际读取到的个数
 *******************************************************/
 int readFromFile(stStu student[])
 {
    FILE *fp=NULL;
    int i=0;
    fp=fopen(FILENAME,"rb");
    if(fp!=NULL)
    {
        while(!feof(fp))
        {
            if(i>=N)
                break;
            if(fread(student+i,sizeof(stStu),1,fp))
                i++;
        }
        fclose(fp);
    }
    return i;
}
 
int unique(stStu student[],int length,int stuNumber)
{
    int flag=1,i;
    for(i=0;i<length;i++)
    {
        if(student[i].number==stuNumber)
        {
            flag=0;
            break;
        }
    }
    return flag;
}
 /*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
参数2:length
  类型:int
  说明:表示实际数组的长度
返回值:i
  类型:int
  说明:表示增加信息后,实际数组的长度
 *******************************************************/
int inputInfo(stStu student[],int length)
{
    int i=0;
    float score;
    int endFlag=0;
    printf("请输入学生信息(学号为0时结束)\n");
    while (!endFlag && i<length)
    {
        fflush(stdin);
        printf("学号:");
        scanf("%d",&student[i].number);
        if (student[i].number==0)
        {
            endFlag=1;
        }
        if (endFlag==1)
            break;
        printf("姓名:");
        scanf("%s",student[i].name);
        printf("性别:");
		getchar();
        scanf("%c",&student[i].sex);

		printf("班级:");
        scanf("%s",student[i].cl);

		printf("专业:");
        scanf("%s",student[i].major);
		
        printf("综合成绩:");
        scanf("%f",&score);
        student[i].overall =score;
        i++;
    }
    return i;
}
 /*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
参数2:length
  类型:int
  说明:表示实际数组的长度
返回值:无
 *******************************************************/
void outputInfo(stStu student[],int length)
{
    int i=0;
    printf("%s %s %s %s %s %s","学号","姓名","性别","班级","专业","综合成绩,\n\n");
    for(i=0;i<length;i++)
    {
        printf("%-4d %-10s %c %s %s %-3.1f",student[i].number,student[i].name,student[i].sex,student[i].cl,student[i].major,student[i].overall);
        printf("\n");
    }
    printf("\n\n");
}
 /*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
参数2:length
  类型:int
  说明:表示实际数组的长度
参数3:stuNum
  类型:int
  说明:表示要查找的学生的学号
返回值:无
 *******************************************************/
void queryByName(stStu student[],int length,char name[])
{
    int i=0;
    printf("%s %s %s %s %s %s","学号","姓名","性别","班级","专业","综合成绩,\n\n");
    printf("------------------------------\n");
    for(i=0;i<length;i++)
    {
        if(strcmp(name,student[i].name)==0)
        {
            printf("%4d %-10s %c %s %s %-4.1f\n",
                   student[i].number,student[i].name,student[i].sex,student[i].cl,student[i].major,student[i].overall);
            break;
        }
    }
    if(i>=length)
        printf("\n不存在!\n");
}
 /*=================================================================*/
 /*                        4:  function insert()                            */
 /*=================================================================*/
/*int insertInfo(STUDENT student[],int length,int arraylen)
{
     int i=len-1;
{1}
     printf("add xuehao,xingming,chengji end with xuehao=0\n");
     do
     {
        i++;
{1}
        printf("number=");
        scanf("%ld",&stud[i].number);
{1}
        if(stud[i].number==0)
        break;
{1}
        printf("name=");
        scanf("%s",stud[i].name);
{1}
        printf("score=");
        scanf("%d",&stud[i].score);
      }while(i<arraylen);
{1}
      return i;
{1}
  }*/
 
  /*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
参数2:length
  类型:int
  说明:表示实际数组的长度
返回值:无
 *******************************************************/
void sortScore(stStu student[],int length)
{
//    stStu s;
/*    for(i=0;i<length;i++)
    {
        k=i;
        for(j=i+1;j<length;j++)
            if(student[j].score>student[k].score)
                k=j;
         //  exchange i and k
        s.number = student[k].number;
        strcpy(s.name,student[k].name);
//        s.score=student[k].score;
{1}
        student[k].number =student[i].number;
        strcpy(student[k].name,student[i].name);
 //       student[k].score = student[i].score;
{1}
        student[i].number = s.number;
        strcpy(student[i].name,s.name);
        student[i].score = s.score;
    }*/
}
/*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
参数2:length
  类型:int
  说明:表示实际数组的长度
返回值:无
 *******************************************************/
void writeToFile(stStu student[],int length)
{
    FILE *fp=NULL;
    int i=0;
    fp=fopen(FILENAME,"wb");
    if(fp==NULL)
    {
        printf("打开文件出错!\n");
        exit(0);
    }
    for(i=0;i<length;i++)
        fwrite(student+i,sizeof(stStu),1,fp);
    fclose(fp);
}
 
void saveUserInfor(stUser userInfor,char *filename)
{
    FILE *fp=NULL;
    fp=fopen(filename,"wb");
    if(fp==NULL)
    {
        printf("打开文件出错!\n");
        exit(0);
    }
    fwrite(&userInfor,sizeof(userInfor),1,fp);
    fclose(fp);
}
stUser* loadUserInfor(stUser *userInfor,char *filename)
{
    FILE *fp=NULL;
    fp=fopen(filename,"rb");
    if(fp!=NULL)
    {
        fread(userInfor,sizeof(stUser),1,fp);
        fclose(fp);
    }
    return userInfor;
}
 /*******************************************************
  功能:主函数
  参数:无
  返回值:无
 *******************************************************/


 

 错误都集中在这里面,主要错误就是字段类型定义与输入不匹配造成的越界等错误,对比一下你的代码吧


#include "Header.h"
/*******************************************************
功能:显示菜单
参数:无
返回值:无
 *******************************************************/
 void displayMenu()
 {
        printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
        printf("+               学生成绩管理系统2.0                     +\n");
        printf("+                                                       +\n");
        printf("+                 1. 输入信息                           +\n");
        printf("+                 2. 输出信息                           +\n");
        printf("+                 3. 查找                               +\n");
        printf("+                 4. 排序                               +\n");
        printf("+                 0. 程序结束                           +\n");
        printf("+                                                       +\n");
        printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
 }
/*******************************************************
功能:登陆函数,验证口令
参数:
参数1:n
  类型:char []
  说明:用户输入口令
返回值:1或0
  类型:int
  说明:1表示通过验证;0表示没有通过
 *******************************************************/
 int Login()
 {
     stUser currentUser,sysUser={'\0'};
     loadUserInfor(&sysUser,"user.dat");//写进去
     if (strlen(sysUser.name) == 0)
     {
         printf("输入用户名进行初始化:");
        gets(sysUser.name);
        printf("输入初始密码:");
        gets(sysUser.password);
        saveUserInfor(sysUser,"user.dat");//读出来
     }
     printf("输入登录信息\n");
     printf("用户名:");
     gets(currentUser.name);
     printf("密码:");
     gets(currentUser.password);
     if(strcmp(currentUser.name,sysUser.name)==0 && strcmp(currentUser.password,sysUser.password)==0)
       return 1;
     else
       return 0;
 }
  /*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
返回值:i
  类型:int
  说明:表示实际读取到的个数
 *******************************************************/
 int readFromFile(stStu student[])
 {
    FILE *fp=NULL;
    int i=0;
    fp=fopen(FILENAME,"rb");
    if(fp!=NULL)
    {
        while(!feof(fp))
        {
            if(i>=N)
                break;
            if(fread(student+i,sizeof(stStu),1,fp))
                i++;
        }
        fclose(fp);
    }
    return i;
}
 
int unique(stStu student[],int length,int stuNumber)
{
    int flag=1,i;
    for(i=0;i<length;i++)
    {
        if(student[i].number==stuNumber)
        {
            flag=0;
            break;
        }
    }
    return flag;
}
 /*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
参数2:length
  类型:int
  说明:表示实际数组的长度
返回值:i
  类型:int
  说明:表示增加信息后,实际数组的长度
 *******************************************************/
int inputInfo(stStu student[],int length)
{
    int i=0;
    float score;
    int endFlag=0;
    printf("请输入学生信息(学号为0时结束)\n");
    while (!endFlag && i<length)
    {
        fflush(stdin);
        printf("学号:");
        scanf("%d",&student[i].number);
        if (student[i].number==0)
        {
            endFlag=1;
        }
        if (endFlag==1)
            break;
        printf("姓名:");
        scanf("%s",student[i].name);
        printf("性别:");
		getchar();
        scanf("%c",&student[i].sex);
        printf("班级:");
		getchar();
        scanf("%c",&student[i].cl);
        printf("专业:");
		getchar();
        scanf("%c",&student[i].major);
        printf("综合成绩:");
        scanf("%f",&score);
        student[i].overall =score;
        i++;
    }
    return i;
}
 /*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
参数2:length
  类型:int
  说明:表示实际数组的长度
返回值:无
 *******************************************************/
void outputInfo(stStu student[],int length)
{
    int i=0;
    printf("%s %s %s %s %s %s","学号","姓名","性别","班级","专业","综合成绩,\n\n");
    for(i=0;i<length;i++)
    {
        printf("%-4d %-10s %c %c %c %-3.1f",student[i].number,student[i].name,student[i].sex,student[i].cl,student[i].major,student[i].overall);
        printf("\n");
    }
    printf("\n\n");
}
 /*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
参数2:length
  类型:int
  说明:表示实际数组的长度
参数3:stuNum
  类型:int
  说明:表示要查找的学生的学号
返回值:无
 *******************************************************/
void queryByName(stStu student[],int length,char name[])
{
    int i=0;
    printf("%s %s %s %s %s %s","学号","姓名","性别","班级","专业","综合成绩,\n\n");
    printf("------------------------------\n");
    for(i=0;i<length;i++)
    {
        if(strcmp(name,student[i].name)==0)
        {
            printf("%4d %-10s %c %c %c %-4.1f\n",
                   student[i].number,student[i].name,student[i].sex,student[i].cl,student[i].major,student[i].overall);
            break;
        }
    }
    if(i>=length)
        printf("\n不存在!\n");
}
 /*=================================================================*/
 /*                        4:  function insert()                            */
 /*=================================================================*/
/*int insertInfo(STUDENT student[],int length,int arraylen)
{
     int i=len-1;
{1}
     printf("add xuehao,xingming,chengji end with xuehao=0\n");
     do
     {
        i++;
{1}
        printf("number=");
        scanf("%ld",&stud[i].number);
{1}
        if(stud[i].number==0)
        break;
{1}
        printf("name=");
        scanf("%s",stud[i].name);
{1}
        printf("score=");
        scanf("%d",&stud[i].score);
      }while(i<arraylen);
{1}
      return i;
{1}
  }*/
 
  /*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
参数2:length
  类型:int
  说明:表示实际数组的长度
返回值:无
 *******************************************************/
void sortScore(stStu student[],int length)
{
//    stStu s;
/*    for(i=0;i<length;i++)
    {
        k=i;
        for(j=i+1;j<length;j++)
            if(student[j].score>student[k].score)
                k=j;
         //  exchange i and k
        s.number = student[k].number;
        strcpy(s.name,student[k].name);
//        s.score=student[k].score;
{1}
        student[k].number =student[i].number;
        strcpy(student[k].name,student[i].name);
 //       student[k].score = student[i].score;
{1}
        student[i].number = s.number;
        strcpy(student[i].name,s.name);
        student[i].score = s.score;
    }*/
}
/*******************************************************
功能:从文件读信息到结构体数组中
参数:
参数1:student[]
  类型:STUDENT []
  说明:用来存储从文件读到的学生信息
参数2:length
  类型:int
  说明:表示实际数组的长度
返回值:无
 *******************************************************/
void writeToFile(stStu student[],int length)
{
    FILE *fp=NULL;
    int i=0;
    fp=fopen(FILENAME,"wb");
    if(fp==NULL)
    {
        printf("打开文件出错!\n");
        exit(0);
    }
    for(i=0;i<length;i++)
        fwrite(student+i,sizeof(stStu),1,fp);
    fclose(fp);
}
 
void saveUserInfor(stUser userInfor,char *filename)
{
    FILE *fp=NULL;
    fp=fopen(filename,"wb");
    if(fp==NULL)
    {
        printf("打开文件出错!\n");
        exit(0);
    }
    fwrite(&userInfor,sizeof(userInfor),1,fp);
    fclose(fp);
}
stUser* loadUserInfor(stUser *userInfor,char *filename)
{
    FILE *fp=NULL;
    fp=fopen(filename,"rb");
    if(fp!=NULL)
    {
        fread(userInfor,sizeof(stUser),1,fp);
        fclose(fp);
    }
    return userInfor;
}
 /*******************************************************
  功能:主函数
  参数:无
  返回值:无
 *******************************************************/


如果正确了,请记得点赞采纳哦