作者共發了2篇帖子。 內容轉換:不轉換▼
 
點擊 回復
467 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)
 

本帖信息

點擊數:467 回複數:1
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2015-11-21 20:55
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。