スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

strncpyとstrncpy_sって互換性ないじゃん

strncpyとstrncpy_sって互換性ないじゃん。

VCではstrncpy使うと古い形式だと警告が出る。
しかしstrncpy_sって動作が違うんだよね。
strncpyは余った部分を0で埋めるし、余らなかったら文字列の終わりを示す0さえつけてくれない。
strncpy_sに変えると以下の動作が変わってしまう:
  • 文字列の終わりを示す0を入れる空きが無かったらエラーになる
  • 文字列の終わりを示す0はつけてくれるが、余った部分は0で埋めてくれない

余った部分を0で埋めてくれないなら、先にmemsetで0でクリアしておこうと考えたら
デバッグ版のときは余った部分を0xfdで埋めてくれるから困った。

strncpyが変で、strncpy_sの方が正しい動きなんだけどさ、
互換性が無いんじゃstrncpyは古い形式だからって警告が出てstrncpy_sを使うことを推奨するのはどうかとおもう。
strncpyの動作を知っていて、この動作をあえて利用したいから使っていたのに。
  1. 2009/07/09(木) 23:58:05|
  2. 未分類
  3. | コメント:0
<<VistaではウイルスチェックのファイルIOは優先度が低いというが | ホーム | 鬼車とbregonig>>

コメント

コメントの投稿


管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。