CI を学習するときprintf
は、渡されたときに多くの引数を受け取ることができることを確認してください。
そして、ユーザーが必要な数のパラメーターを入力できるこのような関数を C で実装する方法がわかりません。私もポインターについて考えましたが、まだ明るいアイデアはありません。このタイプの関数について何かアイデアがある場合は、教えてください。
CI を学習するときprintf
は、渡されたときに多くの引数を受け取ることができることを確認してください。
そして、ユーザーが必要な数のパラメーターを入力できるこのような関数を C で実装する方法がわかりません。私もポインターについて考えましたが、まだ明るいアイデアはありません。このタイプの関数について何かアイデアがある場合は、教えてください。
...
関数宣言で表記法を最後の引数として使用する必要があります。
詳細については、このチュートリアルを参照してください: http://www.cprogramming.com/tutorial/c/lesson17.html
va_args、va_list などを使用する必要があります。このチュートリアルを見てください。 http://www.cprogramming.com/tutorial/c/lesson17.html
それは役立つはずです。
#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));
}
C を使用して可変個引数関数varargs
を記述します。データ型を使用して、未知のサイズの引数リストを反復処理するためのマクロを提供するを含める必要があります: 、、および。stdargs.h
va_start
va_arg
va_end
va_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");
引数リストを複数回反復できることを示す、より興味深い例を次に示します。
この機能を使用すると、タイプ セーフの問題が発生することに注意してください。ウィキの記事はこれのいくつかに対処しています。