C言語なら俺に聞け(入門篇) Part 18
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
100:デフォルトの名無しさん 07/08/19 00:26:50 >>97 文字列終端の'\0'を忘れるケースがありますね。 101:デフォルトの名無しさん 07/08/19 00:29:28 >>100 コピー元の文字列が、0がついてないような場合でも、長さ制限があるから無事に処理ができてしまうということ? それは(この文脈では)sprintf()でも同じことでは? 102:100 07/08/19 00:49:40 >>101 送り側の文字列に0が無ければそうですが、送り側に0があった場合でも、 strncpyの場合、送り側が受け側の長さ(与えた長さ制限)以上の場合、付きません。 対して、sprintfならば0は自動的につきます。受け側に起きる問題ですね。 ちなみに >>100 != >>96 ですので、 >>96さんのいう異常が同じ事を言ってるのかは、わかりませんが。 103:デフォルトの名無しさん 07/08/19 00:50:34 指定した長さでコピーがカットされた時、 \0終端してくれないってことだろ 104:デフォルトの名無しさん 07/08/19 01:14:06 char s[] = "12345678", d[4]; strncpy(d, s, sizeof(d)); ってやったときにdは0終端されないっす。 こういう挙動なのでとっても使いづらいっす。 使いどころはないこともないんだけど、 まず使うことはないですね。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5393日前に更新/232 KB
担当:undef