c++ - 使用从文件读取的结构的函数没有返回输出?

标签 c++ file structure average

我应该声明一个结构,其中包含未知数量学生的姓名和成绩。我是这样做的:

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 文件始终是空的。关于我做错了什么有什么建议吗?

最佳答案

这不是检查文件结尾的方式。尝试一下

while (inFile>>info[i].name) {
     inFile>>info[i].grade1;
     inFile>>info[i].grade2;
     inFile>>info[i].grade3;
     i++;
}

关于c++ - 使用从文件读取的结构的函数没有返回输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23728406/

相关文章:

c++ - 在 C++ 中多线程模拟

JAVA-读取混合有字符串和整数的.txt文件,将字符串存储在数组中,将整数存储在二维数组中

c - 为嵌套结构、段错误分配内存

c - 对齐与打包属性

mysql - 关系型数据库结构逻辑配置

c++ - 编译器优化打破了惰性迭代器

c++ - 通过指针时出现段错误

c++ - 在 C++ 中获取字符串的特殊部分

java - 我在哪里可以找到打印流输出到的文本文件?

java - 如何正确播放不在项目中的音频文件