Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- // using malloc, free
- #include <string.h>
- // using strlen, memcpy
- char* concatenate_strings(const char** strs, size_t n)
- {
- size_t* lens;
- if(! (lens = malloc(n * sizeof(*lens))))
- goto err_rtrn;
- size_t total_len = 0;
- size_t i;
- for(i = 0; i < n; ++i) {
- size_t cur_len = strlen(strs[i]);
- lens[i] = cur_len;
- total_len += cur_len;
- }
- char* concat;
- if(! (concat = malloc(total_len + 1)))
- goto err_free_lens;
- char* writepos = concat;
- for(i = 0; i < n; ++i) {
- size_t cur_len = lens[i];
- writepos = memcpy(writepos, strs[i], cur_len) + cur_len;
- }
- *writepos = '\0';
- free(lens);
- return concat;
- err_free_lens:
- free(lens);
- err_rtrn:
- return NULL;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement