2011-12-17 3 views
0

私はこの関数に複数のchar parameters.howを渡してそれぞれを出力し、各charの最後に '\ n'を追加しましたか?複数のパラメータをcで出力する

void printAndSave(char* msg,...) 
{ 
    //printing single one. 
    //printf("Log:%s\n",msg); 
    //saveToLog(msg); 

    //how to print all of them? 

} 

答えて

2

char*引数の数を指定するには、printAndSave()のシグネチャを変更する必要があると思います。例:

void printAndSave(const unsigned int arg_count, ...) 
{ 
    unsigned int i; 
    char* val; 
    va_list vl; 

    va_start(vl,arg_count); 
    for (i=0;i<arg_count;i++) 
    { 
     val=va_arg(vl,char*); 
     printf ("%s\n",val); 
    } 
    va_end(vl); 
} 
+0

最初のパラメータは必ずしもカウントする必要はありません。 OPの最初の引数( 'char * msg')、例えば、パラメータの数を推測するためにも使用できるフォーマット文字列のようなものを保持します。 – codeling

+0

@nyarlathotep、okしかし、処理する引数の数を関数に通知する必要があります。 – hmjd

1

この末尾の例は、pageです。あなたの問題にそれを簡単に適応させるべきです;)あなたはそれらのタイプを知っていなければならないので注意してください。

関連する問題