Для задания мне нужно сделать журнал оценок на C, состоящий из нескольких взаимосвязанных функций. Я прошел через первые несколько без (слишком много) головной боли, но есть еще одна вещь. По сути, я пытаюсь взять строку символов и скопировать ее в двумерный массив внутри структуры. Думаю, я на пороге успеха, но strcpy
продолжает бросать мне в лицо этих двух очаровательных парней:
передача аргумента 1 из
strcpy
делает указатель из целого числа без приведенияожидается 'char *restrict', но аргумент имеет тип 'char'.
Вот мой код. gb
— это указатель, указывающий на структуру. Если я недостаточно разъяснил что-либо, пожалуйста, спросите.
int add_assignment(Gradebook *gb, const char assgn[MAX_NUMBER_OF_ASSIGNMENTS]) {
int i, j;
for(i=0; i < MAX_NUMBER_OF_ASSIGNMENTS; i++) {
for(j=0; j < (MAX_NAME_LEN+1); j++) {
strcpy(gb->assignment_names[i][j], assgn);
}
}
return 1;
}
Вот структура журнала оценок:
typedef struct gradebook {
int number_of_students;
Students students[MAX_NUMBER_OF_STUDENTS];
int number_of_assignments;
char assignment_names[MAX_NUMBER_OF_ASSIGNMENTS][MAX_NAME_LEN + 1];
int scores[MAX_NUMBER_OF_STUDENTS][MAX_NUMBER_OF_ASSIGNMENTS];
} Gradebook;
strcpy
ожидает копирования символов в буфер, куда вы передаете адрес начала буфера. Судя по сообщению об ошибке, кажется, чтоgb->assignment_names[i][j]
не является адресом чего бы то ни было. - person M.M   schedule 11.12.2015MAX_NUMBER_OF_ASSIGNMENTS
для длины имени назначения, а также для максимального количества назначений. - person M.M   schedule 11.12.2015Gradebook
. - person Barmar   schedule 11.12.2015