將字符串複製到結構體並僅打印一個屬性時,會打印結構體的兩個成員。爲什麼會發生這種情況以及如何克服這一點?結構體中的字符數組成員 - 將值複製到兩個成員
typedef struct {
char a1[14];
char a2[2];
} X;
void main() {
X x;
strcpy(x.a1, "55555555555555");
printf("A1 - %s\n\n", x.a1);
strcpy(x.a2, "D5");
printf("A1 - %s\n\n", x.a1);
printf("A2 - %s\n\n", x.a2);
}
輸出:
A1 - 55555555555555
A1 - 55555555555555D5
A2 - D5
爲什麼D5追加到A1在這裏?
確定在年底給人一種空間
\0
字符,試了一下,現在的工作。所以,它的所有成員串行結構分配的內存?並且由於沒有空值,讀取A1時會附加輸出嗎?我對嗎 ? – user691197@ user691197不完全。我已經更新了答案,解釋了爲什麼這是輸出。但這是嚴格無法解釋的,因爲它是未定義的行爲。 –
http://cboard.cprogramming.com/c-programming/89920-structs-sequential-memory.html可能會有所幫助@ user691197 – Cherubim