學習C時,我發現printf
在傳遞時會收到很多參數。C:寫一個函數不知道有多少個參數
我不知道C如何實現這樣的功能,用戶可以根據用戶需要鍵入儘可能多的參數。我也曾經想過關於指針,但仍然沒有明智的想法。如果有人對這種功能有任何想法,請告訴我。
學習C時,我發現printf
在傳遞時會收到很多參數。C:寫一個函數不知道有多少個參數
我不知道C如何實現這樣的功能,用戶可以根據用戶需要鍵入儘可能多的參數。我也曾經想過關於指針,但仍然沒有明智的想法。如果有人對這種功能有任何想法,請告訴我。
您需要使用va_args,va_list的等。 看看這個教程。 http://www.cprogramming.com/tutorial/c/lesson17.html
這應該是有幫助的。
您必須在函數聲明中使用...
表示法作爲最後一個參數。
請參閱本教程學習更多:http://www.cprogramming.com/tutorial/c/lesson17.html
這是正確的答案。只需要注意關於缺少可變參數類型檢查的警告。 –
您使用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");
Here's演示,你可以在參數列表中不止一次重複一個更有趣的例子。
請注意,使用此功能存在類型安全問題; wiki article解決了這個問題。 [通過可變數量的參數]的
#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));
}
可能重複(http://stackoverflow.com/questions/3836272/passing-variable-number-of-arguments) –