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

时间:2014-11-02 05:20:52

标签: c++ unresolved-external

            //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'函数没有返回任何准确的信息,而是返回随机数字/字母。这不是我的整个代码,而是为了让任何想要帮助的人都能减少阅读量。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

你的功能声明:

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

与您的函数定义不匹配:

void sortRecords(studentType students, int totalStudents[])