我想從數組項中訪問名稱字段並打印名稱,但我遇到了問題。更改包含結構打印的陣列的值
我在callInitialize中創建了一個指針'L',並將它設置爲我命名爲'studentList'的上部結構類型List。
int callInitialize() {
/*Initialize a List*/
List studentList;
List *L;
L = &studentList;
Initialize(L);
#ifdef DEBUG
printf("L->count after function call Initialize = %d\n", L->count);
printf("L->items[0].name after function call Initialize = %s\n", studentList.items[0].name);
#endif
return 0;
}
然後我調用Initialize並嘗試設置要測試的值,但這是不正確的。
void Initialize (List *L) {
char test = "I like you";
L->count = 0;
L->items[0].name = test;
}
我不確定爲什麼L-> items [0] .name = test;是不合適的。我得到不兼容的類型錯誤,但名稱是字符和測試是字符?
另外,一旦我改變了那個值,我會如何打印呢?我的想法是%s是正確的,因爲字段名稱的類型是char。 callIntialize作爲調試語句打印在上面。
我的結構聲明:
#define MAXNAMESIZE 20
typedef struct {
char name[MAXNAMESIZE];
int grade;
} Student;
typedef Student Item;
#define MAXLISTSIZE 4
typedef struct {
Item items[MAXLISTSIZE];
int count;
} List;
感謝您的任何幫助。
['strncpy'不一定是空終止你的字符串!](http://stackoverflow.com/questions/1453876/why-does-strncpy-not-null-terminate) –
@AdamRosenfield這就是爲什麼明確的答案null在'strncpy'之後終止它 – Dmitri