file.read((char*)&stu,sizeof stu);
不能把对象数组当作char*使用,应该按照文件内容的格式来读取并对个个属性一一赋值。
如char buff[100];
file.read(buff,100);
strcpy(stu[0].ID,buff);
strcpy(stu[0].name,buff+32);
......
file.read((char*)&stu,sizeof stu);
根据这步,应该是c:\\学生成绩.txt的文件格式有误
单步调试一下,看一下变量的值,不就知道了么?