文件无法将准确的数据写入文本文件

File failing to write accurate data to a text file

本文关键字:文件 数据 文本      更新时间:2023-10-16
            //My name is Chris Salazar and this is Assignment 7. This program is an upgraded grading program
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <iomanip>
    using namespace std;
    const int STUDENTS = 100;
    struct studentType
    {
        string fname;
        string lname;
        int test1;
        int test2;
        int test3;
        int test4;
        double average;
        char grade;
    };
    void initRecords(studentType students[]);
    int readData(studentType students[]);
    double getStudentAverageGrade(studentType aStudent);
    char getGrade(double average);
    void sortRecords(studentType students[], int totalStudents);
    void swapRecords(studentType& aStudent, studentType& bStudent);
    void writeRecords(studentType students[], int totalStudents);
    void drawLine(ofstream& fout, char ch, int width);
    void checkRecords(studentType students[], int totalStudents);
    int findMax(int, int);
    int findMin(int, int);
    int main(int argc,char** argv)
    {
        int totalStudents = 0;
        studentType students[STUDENTS];
        initRecords(students);
        totalStudents = readData(students);
        checkRecords(students, totalStudents);
        sortRecords(students, totalStudents);
        cout << "after sorting..." << endl;
        checkRecords(students, totalStudents);
        writeRecords(students, totalStudents);
        cout << "Done!" << endl;
        system("pause");
        return 0;
    }
    int readData(studentType students[])
    {
        ifstream fin;
        string fileName;
        int i;
        cout << "Enter filename: ";
        cin >> fileName;
        fin.open(fileName);
        //if (!fin)
        //{
        //  cout << "FILE NOT PRESENT" << endl;
        //  cin.get();
        //  cin.get();
        //  exit(0);
        //}
        i = 0;
        while (fin && i < STUDENTS)
        {
            fin >> students[i].fname >> students[i].lname >> students[i].test1 >> students[i].test2 >> students[i].test3 >> students[i].test4;
            if (!fin)
                break;
            students[i].average = getStudentAverageGrade(students[i]);
            students[i].grade = getGrade(students[i].average);
            i += 1;
        }
        fin.close();
        return i;
    }       
    void writeRecords(studentType students[], int totalStudents)
    {
        string fileName;
        int i = 0;
        ofstream fout;
        cout << "Enter a file name to write to: " << endl;
        getline(cin, fileName);
        cin >> fileName;
        fout.open(fileName);
        while (fout && i < STUDENTS)
        {
            fout << STUDENTS << students[11].fname << " ";
            fout << STUDENTS << students[11].lname << " ";
            fout << STUDENTS << students[11].test1 << " ";
            fout << STUDENTS << students[11].test2 << " ";
            fout << STUDENTS << students[11].test3 << " ";
            fout << STUDENTS << students[11].test4 << " ";
                //<< students[i].lname << students[i].test1 << students[i].test2 << students[i].test3 << students[i].test4;
            i += 1;
        }
    }

我的"writeRecords"函数没有返回任何准确的信息,而是返回随机数字/字母。这不是我的全部代码,并且被削减以减少任何寻求帮助的人阅读。任何帮助将不胜感激。

U 函数声明:

void sortRecords(studentType students[], int totalStudents);

与您的函数定义不匹配:

void sortRecords(studentType students, int totalStudents[])