4

CI を学習するときprintfは、渡されたときに多くの引数を受け取ることができることを確認してください。

そして、ユーザーが必要な数のパラメーターを入力できるこのような関数を C で実装する方法がわかりません。私もポインターについて考えましたが、まだ明るいアイデアはありません。このタイプの関数について何かアイデアがある場合は、教えてください。

4

4 に答える 4

4

...関数宣言で表記法を最後の引数として使用する必要があります。

詳細については、このチュートリアルを参照してください: http://www.cprogramming.com/tutorial/c/lesson17.html

于 2012-07-02T07:29:12.790 に答える
4

va_args、va_list などを使用する必要があります。このチュートリアルを見てください。 http://www.cprogramming.com/tutorial/c/lesson17.html

それは役立つはずです。

于 2012-07-02T07:29:20.080 に答える
3
#include <stdarg.h>
#include <stdio.h>

int add_all(int num,...)
{
    va_list args;
    int sum = 0;
    va_start(args,num);
    int x = 0;
    for(x = 0; x < num;x++)
        sum += va_arg(args,int);
    va_end(args);
    return sum;
}

int main()
{
    printf("Added 2 + 5 + 3: %d\n",add_all(3,2,5,3));
}
于 2012-07-02T07:35:24.117 に答える
3

C を使用して可変個引数関数varargsを記述します。データ型を使用して、未知のサイズの引数リストを反復処理するためのマクロを提供するを含める必要があります: 、、および。stdargs.hva_startva_argva_endva_list

以下は、可変長の引数リストを出力するほとんど役に立たない関数です。

void printArgs(const char *arg1, ...)
{
    va_list args;
    char *str;

    if (arg1) We

        va_start(args, arg1);

        printf("%s ", arg1);

        while ((str = va_arg(argp, char *)) != NULL)
            printf("%s ", str);

        va_end(args);
    }
}

...

printArgs("print", "any", "number", "of", "arguments");

引数リストを複数回反復できることを示す、より興味深い例を次に示します

この機能を使用すると、タイプ セーフの問題が発生することに注意してください。ウィキの記事はこれのいくつかに対処しています。

于 2012-07-02T07:31:16.503 に答える