swprintf(wchar_t,size_t,const wchar_t*,...)とswprintf(wchar_t

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
bonbo

swprintf(wchar_t,size_t,const wchar_t*,...)とswprintf(wchar_t

#1

投稿記事 by bonbo » 13年前

早速ですが質問させていただきます。
ちょっとしたことなのですが、
int swprintf(wchar_t * _String, const wchar_t * _Format, ...)

static int swprintf(wchar_t * _String, size_t _Count, const wchar_t * _Format, ...)
の動作の違いを教えていただけないでしょうか。

具体的には、仮に、以下のプログラムを組んだ場合、どちらとも同じ動作をするのでしょうか。

コード:

//swprintf(wchar_t*,const wchar_t*,...)を用いた場合
    int test=80;
	wchar_t text1[256];
    for(int i=0;i<256;i++)
        text1[i]=L'\0';
    
	swprintf(text1,L"りんご%d円",test);

コード:

//swprintf(wchar_t *, size_t, const wchar_t *, ...)を用いた場合
    int test=80;
	wchar_t text1[256];
    for(int i=0;i<256;i++)
        text1[i]=L'\0';
    
	swprintf(text1,256,L"りんご%d円",test);

一応調べてみたのですが、定義と用法がコピペしてあるサイトばかりで
煮詰まってしまったので質問させていただきました。

環境は
Xcode4.4(だと1の方は使えませんが…),VS2010です。
よろしくお願いします。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: swprintf(wchar_t,size_t,const wchar_t*,...)とswprintf(wch

#2

投稿記事 by h2so5 » 13年前

基本的には同じ動作ですが、1の方は出力の最大文字数を指定しないためバッファオーバーフローが起きる危険性があります。
1はISO C 規格に準拠していませんし、使うべきではありません。

bonbo

Re: swprintf(wchar_t,size_t,const wchar_t*,...)とswprintf(wch

#3

投稿記事 by bonbo » 13年前

>H2So5さん
ありがとうございます。
>基本的には同じ動作
なるほど、VSで使えていた1をXcodeで2に書き換えて使用したらうまくいかなかったので不安だったのですが、
同じ動作ということは別の場所に原因があるのですね。
>1はISO C 規格に準拠していませんし、使うべきではありません。
使わないように心がけます。

ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る