在学习 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
那应该会有所帮助。
您使用 Cvarargs
编写可变参数函数。您需要包含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");
这是一个更有趣的示例,它演示了您可以多次迭代参数列表。
请注意,使用此功能存在类型安全问题;wiki 文章解决了其中的一些问题。
#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));
}