• 締切済み

可変個引数の関数

今現在可変個引数をとる関数を作成しています。 物としてはprintfと同等のものなのですが、可変個引数の取得の方法がわからず停滞してしまっています。 printtest("%s",str); と記述してstrの中身が出力されるようにしたいのです。 どうかご助力のほどよろしくお願いいたします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

<stdarg.h> を #include して va_start, va_arg, va_end を使う. 使い方としては, 例えば指定した個数の int引数の和を計算する関数だと #include <stdarg.h> int sumall(int n, ...) { int sum = 0; va_list args; va_start(args, n); while (n--) { int data = va_arg(args, int); sum += data; } va_end(args); return sum; } va_start と va_end が必ず対になること, va_arg で取り出す値の型は「何らかの方法」で知っておかなければならない (上の例だと「すべて int」と仮定しているからいいけど, いろいろな型が取りえる場合には「取り出す値の型」をほかのパラメータなどで知っておかなければならない) かつここでは char, short, float を指定できないことに注意. といってみるけど, ことこの問題だけに関して言えば int printtest(char *fmt, ...) { int ret; va_list args; va_start(args, fmt); ret = vprintf(fmt, args); va_end(args); return ret; } が最も簡単. まあ, そのあとの拡張性はないので役には立たないかもしれない.

kazu_seven
質問者

お礼

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

関連するQ&A

専門家に質問してみよう