もきもき3D

アクセスカウンタ

zoom RSS WIN環境のMinGWとsnprintf

<<   作成日時 : 2009/12/14 17:51   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

 とりあえず、snprintf()を使うとMinGWのライブラリから静的リンクされる(ファイルが太る)。
 んで、戻り値がC99に適ってない気がする( gcc 3.4.5-3(1のcc1)、rt 3.15.2、win32api 3.13 )。

 char dst[10];
 char src[] = 10byteの文字列;
 として、

 i = snprintf(dst, 10, "123%s", src); とした時 、
 i に-1が戻らず、無制限の場合に書き込まれるはずだったbyte数(今回は13)が返る。
 一応、オーバーラン自体はしていない模様。

 で、_snprintf()。 MSVCRTへの動的リンクになる(ファイルは太らない)。
 これで上記を行うとちゃんと-1が戻る。

 どちらにしろ、バッファの終端をNULLで埋める必要からバッファサイズを知っていないといけない訳だけれど、その必要の有無を戻り値と(例では10と)比較して決める必要があるのはよろしくない('з`)

 確か、snprintf()は%pや%x等でsprintf(MSVCRT?)と違う挙動をしてた気もする。
 そんな感じで、素直にMSVCRTの_snprintf()を使う方が良さげ、という話し('з`)

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
WIN環境のMinGWとsnprintf もきもき3D/BIGLOBEウェブリブログ
文字サイズ:       閉じる