c 可变参数 可变 形参 不确定

c 可变参数 :gcc -g -Wall -O0 fuck.c -o fuck

#include < stdlib.h > /* 說明 malloc, NULL, size_t */
#include
< stdarg.h > /* 說明 va_ 相關類型和函數 */
#include
< string .h > /* 說明 strcat 等 */

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 * )) != NULL)
len
+= strlen(p);

va_end(argp);

retbuf
= malloc(len + 1 ); /* +1 包含終止符 \0 */

if (retbuf == NULL)
return NULL; /* 出錯 */

(
void )strcpy(retbuf, first);

va_start(argp, first);
/* 重新開始掃瞄 */

while ((p = va_arg(argp, char * )) != NULL)
(
void )strcat(retbuf, p);

va_end(argp);

return retbuf;
}


int
main ( )
{

char * str = vstrcat( " Hello, " , " world! " , " 123 " , " wo " );
printf (
" %s\n " , str);

return 0 ;
}
/* ---------- end of function main ---------- */

你可能感兴趣的:(可变参数)