0

次のコードの何が問題になっていますか?関数print()をprintfとして機能させるにはどうすればよいですか?

#include <stdio.h>
#include<stdarg.h>

void print(char *format,...)
{
    va_list args;
    va_start(args,format);
    printf(format,args);
}

int main() {
   print("%d %s",5,"le");
}
4

4 に答える 4

7

varargsを渡す必要がある場合は、vprintf代わりにを使用してください。

于 2012-05-21T15:58:22.500 に答える
3

おそらくvprintfを見る必要があります。その関数(および関連する関数)を使用すると、可変引数リストを渡すことができ、フォーマットを処理します。

于 2012-05-21T15:58:15.257 に答える
3

そこでvprintfが必要です。この質問を見てください。同様の問題があります。printf関数ファミリーとvprintf関数ファミリーの違いは何ですか。また、どちらを使用する必要があるのでしょうか。

于 2012-05-21T15:59:00.580 に答える
1

まず第一に、va_end()を使用する場合に必須の呼び出しがありませんva_start()

また、引数としてprintf()使用する場合は使用できません。va_listを見てください vprintf()

例:

void print(char *format,...)
{
    va_list args;
    va_start(args,format);
    vprintf(format,args);
    va_end(args);
}
于 2012-05-21T16:03:43.327 に答える