请问:如何将可变参数的函数的参数传递给另一个可变参数的函数

youqika 2007-11-12 04:42:16
举个简单的例子:

/*模仿java中的System.out.println()*/
void println(const char* format,...)
{
printf(format,...); /*不过这样的不对的。应该如何写呢?望高手指点*/
printf("\n");
}

...全文
738 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
youqika 2007-11-26
  • 打赏
  • 举报
回复
多谢各位了
ttlyfast 2007-11-12
  • 打赏
  • 举报
回复
问题:可变长参数的传递
  有时候,需要编写一个函数,将它的可变长参数直接传递给另外的函数,请问,这个要求能否实现?

  答案与分析:

  目前,你尚无办法直接做到这一点,但是我们可以迂回前进,首先,我们定义被调用函数的参数为va_list类型,同时在调用函数中将可变长参数列表转换为va_list,这样就可以进行变长参数的传递了。看如下所示:


void subfunc (char *fmt, va_list argp)
{
...
arg = va_arg (fmt, argp); /* 从argp中逐一取出所要的参数 */
...
}

void mainfunc (char *fmt, ...)
{
va_list argp;
va_start (argp, fmt); /* 将可变长参数转换为va_list */
subfunc (fmt, argp); /* 将va_list传递给子函数 */
va_end (argp);
...
}

http://www.fortime.net/html/c/20061219/2229.html
babyvox1999 2007-11-12
  • 打赏
  • 举报
回复
va_list args;
va_start(args, format);
_vsntprintf(tszTemp, sizeof(tszTemp)/sizeof(TCHAR) - 1, format, args);
printf(tszTemp);
ttlyfast 2007-11-12
  • 打赏
  • 举报
回复
这个问题貌似可转换为如何得到可变参数总大小的问题
网上搜搜去
这东西很多

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧