未知个数的字符串连接

1502阅读 0评论2011-05-20 onezeroone
分类:C/C++


  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. }
上一篇:字符串连接返回串尾
下一篇:字符串化小写