c - 如何在 C 中将数组的字符串元素连接成单个字符串?

标签 c arrays string concatenation string-concatenation

我有一个字符串数组,我想创建一个由所有数组元素串联而成的新字符串。感谢任何帮助,谢谢

最佳答案

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *concatenate(size_t size, char *array[size], const char *joint){
    size_t jlen, lens[size];
    size_t i, total_size = (size-1) * (jlen=strlen(joint)) + 1;
    char *result, *p;


    for(i=0;i<size;++i){
        total_size += (lens[i]=strlen(array[i]));
    }
    p = result = malloc(total_size);
    for(i=0;i<size;++i){
        memcpy(p, array[i], lens[i]);
        p += lens[i];
        if(i<size-1){
            memcpy(p, joint, jlen);
            p += jlen;
        }
    }
    *p = '\0';
    return result;
}

int main(){
    char *ss[] = { "first", "second", "last" };
    char *cat = concatenate(3, ss, "");
    puts(cat);
    free(cat);
    cat = concatenate(3, ss, ", ");
    puts(cat);
    free(cat);
    return 0;
}

关于c - 如何在 C 中将数组的字符串元素连接成单个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25767841/

相关文章:

c - 棘手的 C 字符指针问题

c - 从 C 中的 UTF8 字符串中删除变音符号

c - 为什么连续数组元素的地址在这里递增四?

c - 在 C 中使用指针对数组进行排序时遇到问题

c++ - std::string 赋值的正确用法

java - 如何在java中使用正则表达式替换字符串中的字符?

c - C语言中关于 "goto"的一些问题

java - 多类型数组

c - 错误的值 - 将大字符分解为 int 数组

c++ - 来自模板参数的字符串的 constexpr 长度