- 締切済み
memset関数について
c始めたばかりなのですが、 chra y[100]; memset(y,'1',99); 文字列のmemset関数で初期化したとき y[99]にはNULL文字が入るのでしょうか?? printfでの%sはNULL文字まで表示ということなのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- aris-wiz
- ベストアンサー率38% (96/252)
回答No.2
>printfでの%sはNULL文字まで表示 これが分かってれば、分かると思いますが、 '\0'が出てくるまで表示するのです、 逆に言えばなかったらどこまでも表示します。(アクセス違反しても) 表示できるのは、たまたまアクセスしても 特に弊害のない場所だったからです。
- episteme_at_goo
- ベストアンサー率25% (9/36)
回答No.1
> y[99]にはNULL文字が入るのでしょうか?? NO. > printfでの%sはNULL文字まで表示ということなのでしょうか? YES.
質問者
補足
chra y[100]; memset(y,'1',99); printf("%s"y); このときに自分は文字列の最後にNULLがないため表示できないと思ったのですが、 表示できるのはなぜでしょうか??
お礼
ありがとうございました。。 いろいろやっていたら、おかしな文字がでるときがありました。 最後にNULLをつけわすれないようにしたいです