sprintfと同じ働きの関数を作るには?

[戻る]
ニャンコ□ 2006/05/03(水) 15:53:03
sprintfの書式を見てみると

int sprintf(char *str,const char *format,...);

となっていますが、これを自分で表現する方法がわかりません。

なぜいくつもの引数を付けることができるのか理解できないのですが、

自分で作ってみたいと思いまして質問させてもらいました。

作る関数の書式は

int sf(char *str,const char *format,...)
{
    // ここからどのように不規則な数の引数を認識するかわかりません。
}

言語はCまたはC++でよろしくお願いしますペコリ(o_ _)o))

たけ 2006/05/03(水) 17:50:02
意地悪を言うわけではないですが
sprintfのソースを見てみるとわかりますよ。私も以前、同じ疑問を持ち、そうしまし
た。

Ban 2006/05/03(水) 17:58:01
つvsprintf

通りすがり 2006/05/03(水) 21:33:44
va_listとその関連マクロを使います。
フォーマット文字列を見ながら取り出すべき型を判断してva_argで取り出します。
(型が決め打ち出来るならその限りではないけど)

http://msdn2.microsoft.com/ja-JP/library/kb57fad8.aspx

Blue 2006/05/03(水) 22:04:48
こちらのサイトも参考になれば
http://www1.kcn.ne.jp/~robe/cpphtml/html03/cpp03016.html

ニャンコ□ 2006/05/04(木) 00:20:39
[[解決]]
たけさん Banさん、通りすがりさん、Blueさん、ありがとうございます。

「stdarg.h」のva_arg、va_end、va_startを使うことにより無事に解決しました。

本当に感謝です!

o(・∇・o)(o・∇・)o

古いスレッドには追加発言できません。