2

この機能がある場合:

printAll(const char *message, ...)
{
    va_list argptr = NULL;
    va_start(argptr, message);
   
    // todo: how to printf all the arguments in the message?   
 
    va_end(argptr);    
}

次のように関数を呼び出すとします。

printAll("My info: Value1 = %d, Value 2=%d", 1, 2);

この行では: // todo: how to printf all the arguments in the message?

それらをすべて印刷するにはどうすればよいですか:

My info: Value1 = 1, Value 2=2
4

3 に答える 3

15

vprintf()まさにこれを行うように設計された関数を探しています:

vprintf(message, argptr);

関数のv*printf()ファミリは、varargs の代わりに va_list を取ることを除いて、基本的に通常の対応する関数と同じように機能します。彼らはあなたを呼んva_end()でいないので、あなたの今のやり方は正しいです。

于 2012-05-07T13:32:26.980 に答える