Advertisement
homer512

Concat

Oct 15th, 2015
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.73 KB | None | 0 0
  1. #include <stdlib.h>
  2. // using malloc, free
  3. #include <string.h>
  4. // using strlen, memcpy
  5.  
  6.  
  7. char* concatenate_strings(const char** strs, size_t n)
  8. {
  9.   size_t* lens;
  10.   if(! (lens = malloc(n * sizeof(*lens))))
  11.     goto err_rtrn;
  12.   size_t total_len = 0;
  13.   size_t i;
  14.   for(i = 0; i < n; ++i) {
  15.     size_t cur_len = strlen(strs[i]);
  16.     lens[i] = cur_len;
  17.     total_len += cur_len;
  18.   }
  19.   char* concat;
  20.   if(! (concat = malloc(total_len + 1)))
  21.     goto err_free_lens;
  22.   char* writepos = concat;
  23.   for(i = 0; i < n; ++i) {
  24.     size_t cur_len = lens[i];
  25.     writepos = memcpy(writepos, strs[i], cur_len) + cur_len;
  26.   }
  27.   *writepos = '\0';
  28.   free(lens);
  29.   return concat;
  30.  err_free_lens:
  31.   free(lens);
  32.  err_rtrn:
  33.   return NULL;
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement