• 締切済み

memset関数について

c始めたばかりなのですが、 chra y[100]; memset(y,'1',99); 文字列のmemset関数で初期化したとき y[99]にはNULL文字が入るのでしょうか?? printfでの%sはNULL文字まで表示ということなのでしょうか?

みんなの回答

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.2

>printfでの%sはNULL文字まで表示 これが分かってれば、分かると思いますが、 '\0'が出てくるまで表示するのです、 逆に言えばなかったらどこまでも表示します。(アクセス違反しても) 表示できるのは、たまたまアクセスしても 特に弊害のない場所だったからです。

gyagyugyo
質問者

お礼

ありがとうございました。。 いろいろやっていたら、おかしな文字がでるときがありました。 最後にNULLをつけわすれないようにしたいです

回答No.1

> y[99]にはNULL文字が入るのでしょうか?? NO. > printfでの%sはNULL文字まで表示ということなのでしょうか? YES.

gyagyugyo
質問者

補足

chra y[100]; memset(y,'1',99); printf("%s"y); このときに自分は文字列の最後にNULLがないため表示できないと思ったのですが、 表示できるのはなぜでしょうか??

関連するQ&A

専門家に質問してみよう