• ベストアンサー

配列のコピー

配列bufの内容をstrにコピーしてgetsを使い 表示させたいのですが、うまくいかず 余計な文字まで出力されます、どのようにすれば うまくいくでしょうか? どなたかアドバイスよろしくお願いしますm(_ _)m #include <stdio.h> void main(){ char buf[256]="message"; char str[256]; int i = 0; while(buf[i] != NULL){ str[i] = buf[i]; i++; } printf(str); }

質問者が選んだベストアンサー

  • ベストアンサー
  • chipizou
  • ベストアンサー率44% (8/18)
回答No.1

"while(buf[i] != NULL){" になっているので、ヌル文字がコピーされていません。 そのため、文字列の終端が見つからず、不当な表示となってしまっています。 また、NULLより'\0'または0x00等の方が良いと思います。NULLは(void *)型のため。

hirofuji
質問者

お礼

早速のお返事ありがとうございます。 出力ですがgetsではなくputsの間違いでした。 以下のようにしたら余計な文字は消えました^^; void main(){ char buf[256]="message"; char str[256]; int i = 0; while(buf[i] != '\0'+1){ str[i] = buf[i]; i++; } puts(str); }

関連するQ&A