對於一個作業,我必須用C構成一個包含多個互鎖功能的成績簿。我已經通過了前幾個沒有(太多)頭痛的問題,但是接下來就是這個問題。基本上,我正在嘗試使用字符串並將其複製到結構內部的二維數組中。我覺得我成功的風口浪尖,但strcpy
一直在我的臉上扔這兩個迷人的傢伙:爲什麼我不能strcpy?
傳遞參數的
strcpy
1,使指針從整數沒有投預期「的char * 限制'但參數是'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;
我假設你的assignment_names是一個二維整數數組?對非字符串類型使用memcpy。發佈結構會很好。 –
'strcpy'希望將字符複製到傳遞緩衝區開始地址的緩衝區中。看來,根據錯誤消息,'gb-> assignment_names [i] [j]'不是任何東西的地址。 –
看起來很奇怪,您將使用'MAX_NUMBER_OF_ASSIGNMENTS'作爲賦值名稱的長度,以及賦值的最大數量。 –