#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <tchar.h>
char *vstrcat(const char *first,...)
{
size_t len;
char *retbuf;
va_list argp;
char *p;
if (first==NULL)
{
return NULL;
}
len=strlen(first);
va_start(argp,first);
while ((p=va_arg(argp,char *))!=_T("0"))
{
len+=strlen(p);
}
va_end(argp);
retbuf=malloc(len+1);
if (retbuf==NULL)
{
return NULL;
}
(void)strcpy(retbuf,first);
va_start(argp,first);
while((p=va_arg(argp,char *))!=_T("0"))
{
(void)strcat(retbuf,p);
}
va_end(argp);
return retbuf;
}
int main()
{
char *pstr=vstrcat(_T("a"),_T("f"),_T("k"),_T("0"));//此处给定一个结束字符;
//char *pstr=vstrcat("abc","def","higk");
printf("pstr=%s\n",pstr);
}
说明:
Return Value
va_arg returns the current argument; va_start andva_end do not return values.