我应该声明一个结构,其中包含未知数量学生的姓名和成绩。这是我如何做的:使用从文件读取的结构的函数不返回输出?
struct student {
char name[30];
int grade1, grade2, grade3;
};
然后,我有一个包含了对不同线路每个学生的信息的文本文件。我以这种方式阅读。
student info[20];
int nr_students,i=0,k=0;
fstream inFile;
inFile.open("in.txt");
fstream outFile;
outFile.open("out.txt");
while(!EOF) {
inFile>>info[i].name;
inFile>>info[i].grade1;
inFile>>info[i].grade2;
inFile>>info[i].grade3;
i++;
}
nr_students=i;
avg_promovability(outFile,info, nr_students);
我认为这不能正常工作,因为nr_students
显然保持为0。此外,第一功能:
void avg_promovability(fstream &outFile,student *info, int nr_students)
{
int i;
float sum=0,j=0,avg;
for (i=0;i<nr_students;i++)
if(info[i].grade1 >=5 && info[i].grade2>=5 && info[i].grade3>=5) {
sum=sum + info[i].grade1 + info[i].grade2 + info[i].grade3;
j++;
}
avg=sum/(3*j);
outFile<<avg;
}
它应该计算已通过学生的平均成绩(即,所有的成绩都是> = 5)。它并没有真正做到,out.txt文件总是空的。任何关于我在做什么的错误?
'而(!EOF)'永远是假的,因为'EOF'是一个常数非零值。相反,从文件中读取并检查这些读取中的错误。 –
避免尽可能地忽略'{'和'}',它可以创建微妙的错误...苹果公司在他们的SSL实现(又称失败)中的错误是由开发人员没有注意到的缺失卷曲引起的。 –