通知
すべてクリア
Topic starter
2003年11月13日 3:48 PM
くだらない質問で申し訳ありませんがご教授ください。
以下のようなプログラムで、stycpyでc.aに
文字列をセットします。
その後、c.bにデータをセットすると、c.aの
AAの後にゴミのようなデータが入ってしまうのですが、
これを回避する方法はないでしょうか?
main() {
struct {
char a[2] ;
short b ;
} c ;
strycpy( c.a, AA ) ;
c.b = 1 ;
}
環境は、Windows2000、VC++6.0です。
2003年11月13日 3:51 PM
文字列のオシリには終端文字 '\0' がありますから、
n文字を納める配列の大きさは n+1 です。
Topic starter
2003年11月13日 3:56 PM
では、配列を変えなければ回避できませんか?
質問のような構造体の形を変えたくはないのですが・・・
2003年11月13日 3:57 PM
現状メモリを壊しているわけなので、変えざるを得ないでしょう。
もしくは配列 a に入れる文字数を減らすか、どちらか。
Topic starter
2003年11月13日 4:17 PM
皆様、ありがとうございました。
構造体を変更します。
2003年11月13日 10:45 PM
2文字に限定されているんなら
strcpyじゃなくてmemcpyしたらいかが?
もちろんその後aをゼロ終端文字列として扱うことはできませんが。
2003年11月13日 10:50 PM
あ、そか。
strcpyしたときにbが壊れて困るという話じゃなく、
bに代入したときに文字列としてのaが壊れて困るって話なんですね。
つまりあくまでaは文字列なのだと。
上の私の発言は無視してください。
スレ汚し失礼>ALL