2014-10-11 2 views
1

Я пишу программу для школы, которая должна сохранять календарь, когда должны выполняться задания. Мне нужно сохранить название курса (например, cs162), описание домашней работы и дату выполнения в массив структур со структурой для даты в первой структуре.ввод файла в массив struct struct

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

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

Первое, что мне нужно сделать, - это прочитать любые назначения, которые могут уже существовать из уже созданного файла. Формат файла таков:

courseName; описание; мм/дд/гггг (dueDate).

Вот функция нагрузки (проблема в том, после того, как зЬгсру пытается получить 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, ';'); 
    } 
} 

Спасибо.

+0

Ваш код не компилируется в моей gcc :(- ошибка: несовместимые типы при назначении типа 'int [2]' из типа 'int' courseAssignment.dueDate.mm = 1; – Inquisitive

ответ

1

Ваша проблема заключается в декларации структуры DueDate. Вы объявляете yyyy как массив из 4 ints, mm как массив из 2 int и так далее. И в той части кода, на которую вы указали, вы пытаетесь скопировать int по массиву int, что невозможно.

Если вы исключили часть объявления массива из структуры, она должна работать отлично.

+0

Doh !!! thanks man. – zedzorander

Смежные вопросы