作者共发了2篇帖子。 内容转换:不转换▼
 
点击 回复
472 1
【原创】C语言版本的join函数(字符串数组组合为字符串的函数)(单字符分隔符版)
一派护法 十九级
1楼 发表于:2015-11-21 20:53
注:部分函数依赖于
https://zh.arslanbar.net/post.php?t=23426
中定义的一些函数

char *join(char delimiter, char **array)
{
    int totallen = strarrtotallen(array);
    int alen = strarrlen(array);
    int len = totallen + alen;
    if (len == 0)
        len++;
    char *str = (char *)malloc(len * sizeof(char));
    char *pStr = str;
    if (len == 1)
    {
        *str = '\0';
        return str;
    }
    while (*array != NULL)
    {
        while (**array != '\0')
        {
            *pStr = **array;
            pStr++;
            (*array)++;
        }
        *pStr = delimiter;
        pStr++;
        array++;
    }
    *(pStr - 1) = '\0';
    return str;
}

int main()
{
    char *strarr[] = {"apple", "banana", "orange", NULL};
    char *str = join(',', strarr);
    puts(str);
    free(str);
    return 0;
}
输出:apple,banana,orange
一派护法 十九级
2楼 发表于:2015-11-21 20:55
当char *strarr[] = {NULL};时,输出为空字符串,strlen(str) = 0
当char *strarr[] = {"abc", NULL};时,输出abc,strlen(str) = 3
当char *strarr[] = {"abc", "defg", NULL};时,输出abc,defg,strlen(str) = 8

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:472 回复数:1
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2015-11-21 20:55
 
©2010-2024 Arslanbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。