はきだめC/C++下級者の質問箱
レス数が900を超えています。1000を超えると表示できなくなるよ。
0935デフォルトの名無しさん
2006/08/01(火) 14:34:49charの配列を文字列として使うためには文字列の最後にナル文字を置かないといけない。
つまり、memset(obj.hoge_a, 'y', sizeof(obj.hoge_a) - 1);ではその最後のナル文字が書き込まれないので要注意。
さて、>931の問題はもう一つあって、obj全体を一つのchar配列であるかのように扱ってしまっている。
つまり、obj.hoge_a[0]〜obj.hoge_a[7]まで全て'y'で埋め尽くしているわけだ。
偶偶その構造体ではhoge_a, hoge_b, hoge_cが連続していたので、fprintf()のときに
sizeof(hoge_a) + sizeof(hoge_b) + sizeof(hoge_c) - 1の23文字が出力されたと言うわけ。
その辺りのことに慣れない内はmemset()を使うのは避けた方がいいかもしれない。
レス数が900を超えています。1000を超えると表示できなくなるよ。