现在的位置: 首页 > 综合 > 正文

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

2012年11月16日 ⁄ 综合 ⁄ 共 677字 ⁄ 字号 评论关闭

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 ---------- */

抱歉!评论已关闭.