储。如果要覆盖原来的记录,就先保存原纪录,然后令numStus为0,否则原来的numStus不变。在读取文件时,使用fread函数,每次读取sizeof(StuInfo)个字节,存放在数组records[numStus]里面,并令numStus自加1,知道读完文件。如果每读入一条之前,numStus已经大于或等于arraySize,那么就是用realloc函数重新为records分配大小为(arraySize+INCR_SIZE)个StuInfo的数组然后重新设置arraySize。读入文件要涉及到重新排名问题,所以调用getIndex函数对名次更新。4.sort.c判断有没有记录若numStus==0则返回主函数按学号、名称、名次、总成绩排序时,用比较排序法用strcmp判断学号姓名大小,满足条件排序。对名次、总成绩、单科成绩排序时,对前后两项的大小进行比较,满足条件排序。排序用{copyRecord(&records[i],&tmps);copyRecord(&records[j],&records[i]);copyRecord(&tmps,&records[j]);}进行换位5.que_remv_modi.cqueryInfo判断有没有记录没有记录则返回主函数按学号,按名次,按姓名按成绩区间输入学号或者名次,姓名给target 输入成绩区间分别把最小值、最大值赋给target1[20]、target[20] if(atoi(target1)<=records[i].sum&&atoi(target)>=records[i].sum)反复调用findRecord找出符合条件的记录显示出来输出学生信息,并跳出while循环,避免和其他查询方式冲突。在查询记录的时候除了按成绩区间查询外需要反复调用findRecord直至i为-1即可,这样每次求得的i就是符合条件的记录序号。