文字列を構造体にコピーして1つの属性のみを出力すると、構造体の両方のメンバが出力されます。なぜこれが起こり、これを克服するのか?char構造体の配列メンバー - 値が両方のメンバーにコピーされる
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に追加したのですか?
[OK]をして
\0
文字の末尾にスペースを与えてみてください、逐次そのすべてのメンバーのためにそれを試してみましたが、機能するようになりました...だから、構造体の割り当てメモリ?ヌルがないので、A1が読み込まれたときに出力が追加されましたか?私は正しい? – user691197@ user691197私はそれがなぜ出力されたのかを説明する答えを更新しました。しかし、それは未定義の行動であるため、厳密には説明できません。 –
http://cboard.cprogramming.com/c-programming/89920-structs-sequential-memory.htmlが役立つかもしれない@ user691197 – Cherubim