文件输入到struct struct数组中

时间:2014-10-11 18:52:46

标签: c++ arrays file-io struct

我为学校编写了一个程序,需要在作业到期时保留日历。我需要将课程名称(例如cs162),家庭作业的描述和截止日期保存到结构数组中,并在第一个结构中包含日期结构。

struct dueDate{
    int mm[2];
    int dd[2];
    int yyyy[4];
};

struct Task{
    char course[MAX_CAP];
    char description[MAX_CHAR];
    dueDate dueDate;
};

我需要做的第一件事是读取已经创建的文件中可能已经存在的任何作业。该文件的格式为:

courseName;描述; mm / dd / yyyy(dueDate)。

这是加载函数(问题是在strcpy尝试将int插入dueDate结构之后):

void loadDB(Task assignment[], int& size, char location[]){
    ifstream inTasks;
    char courseName[MAX_CAP];
    char fullDescription[MAX_CHAR];
    int mm;
    int dd;
    int yyyy;
    Task courseAssignment;

    cout << "inside" << endl;

    inTasks.open(location);
    while(!inTasks){
        cerr << "There is a problem with the path of the file " << location << "!";
        exit(1);
    }
    inTasks.get(courseName, MAX_CAP, ';');
    while(!inTasks.eof()){
        inTasks.ignore(MAX_CAP, ';');
        inTasks.get(fullDescription, MAX_CHAR, ';');
        inTasks.ignore(MAX_CHAR, ';');
        inTasks >> mm;
        inTasks.ignore(MAX_CAP, '/');
        inTasks >> dd;
        inTasks.ignore(MAX_CAP, '/');
        inTasks >> yyyy;
        inTasks.ignore(MAX_CAP, '\n');

        strcpy(courseAssignment.course, courseName);
        strcpy(courseAssignment.description, fullDescription);

        // PROBLEM
        // the warings are under the courseAssignment part
        // the error message is "expression must be a modifiable lvalue"
        courseAssignment.dueDate.mm = mm;
        courseAssignment.dueDate.dd = dd;
        courseAssignment.dueDate.yyyy = yyyy;

        addToDB(assignment, size, courseAssignment);

        inTasks.get(courseName, MAX_CAP, ';');
    }
}

谢谢。

1 个答案:

答案 0 :(得分:1)

您的问题是DueDate结构的声明。您将yyyy声明为4个整数的数组,mm表示为2个整数的数组,依此类推。在你指向的代码部分,你试图在一个int数组上复制一个int,这是不可能的。

如果从结构中删除数组声明部分,它应该可以正常工作。