#include <iostream>
#include <stdarg.h>
using namespace std;
int sum(char * msg, ...);
int my_vsprintf(char *buf, char *format, ...);
int main()
{
sum("The sum of the list is:", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0);
cout << endl;
char buf[256];
my_vsprintf(buf, "%My name is %s and I am %d years old.", "Ben", 24);
cout << buf << endl;
system("pause");
return 0;
}
int sum(char *msg, ...)
{
va_list st;
va_start(st, msg);
int total = 0;
int tmp;
while((tmp = va_arg(st, int)) != 0)
{
total += tmp;
}
va_end(st);
cout << "The sum of the list is: " << total;
return 0;
}
int my_vsprintf(char *buf, char *format, ...)
{
va_list st;
va_start(st, format);
vsprintf(buf, format, st);
/***************************************************************************/
/* 函数名: vsprintf
/* 功 能: 送格式化输出到串中
/* 返回值: 正常情况下返回生成字串的长度(除去\0),错误情况返回负值
/* 用 法: int vsprintf(char *string, char *format, va_list param);
/* 将param 按格式format写入字符串string中
/* 注: 该函数会出现内存溢出情况,建议使用vsnprintf */
/***************************************************************************/
va_end(st);
return 0;
}