sprintfと同じ働きの関数を作るには? – プログラミング – Home

sprintfと同じ働きの関数を作るに...
 
通知
すべてクリア

[解決済] sprintfと同じ働きの関数を作るには?


ニャンコ□
 ニャンコ□
(@ニャンコ□)
ゲスト
結合: 19年前
投稿: 2
Topic starter  

sprintfの書式を見てみると

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

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

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

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

作る関数の書式は

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

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


引用未解決
トピックタグ
たけ
 たけ
(@たけ)
ゲスト
結合: 24年前
投稿: 116
 

意地悪を言うわけではないですが
sprintfのソースを見てみるとわかりますよ。私も以前、同じ疑問を持ち、そうしまし
た。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

つvsprintf


返信引用
通りすがり
 通りすがり
(@通りすがり)
ゲスト
結合: 24年前
投稿: 92
 

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

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


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

こちらのサイトも参考になれば
http://www1.kcn.ne.jp/~robe/cpphtml/html03/cpp03016.html


返信引用
ニャンコ□
 ニャンコ□
(@ニャンコ□)
ゲスト
結合: 19年前
投稿: 2
Topic starter  

たけさん Banさん、通りすがりさん、Blueさん、ありがとうございます。

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

本当に感謝です!

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました