Chinaunix首页 | 论坛 | 博客
  • 博客访问: 358518
  • 博文数量: 100
  • 博客积分: 2500
  • 博客等级: 大尉
  • 技术积分: 1209
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-15 21:24
文章分类

全部博文(100)

文章存档

2011年(100)

分类: C/C++

2011-05-20 13:26:59


  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdarg.h>
  4. #include <string.h>


  5. char *myStrconcat(const char *str1, ...);

  6. int
  7. main(void)
  8. {
  9.     char *r = myStrconcat("Hello", " my", " world\n", NULL);
  10.     printf(r);
  11.     free(r);

  12.     return 0;
  13. }

  14. char *
  15. myStrconcat(const char *str1, ...)
  16. {
  17.     size_t     l;
  18.     va_list args;
  19.     char     *s;
  20.     char     *concat;
  21.     char    *ptr;

  22.     if (!str1)
  23.         return NULL;

  24.     l = 1 + strlen(str1);
  25.     va_start(args, str1);
  26.     s = va_arg(args, char *);
  27.     while (s) {
  28.         l += strlen(s);
  29.         s = va_arg(args, char *);
  30.     }
  31.     va_end(args);

  32.     concat = (char *)malloc(sizeof (char) * l);
  33.     ptr = concat;

  34.     ptr = stpcpy(ptr, str1);
  35.     va_start(args, str1);
  36.     s = va_arg(args, char *);
  37.     while (s) {
  38.         ptr = stpcpy(ptr, s);
  39.         s = va_arg(args, char *);
  40.     }
  41.     va_end(args);

  42.     return concat;
  43. }
  • 方便多个未知字符串连接
阅读(1370) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~