c - 如何在 C 中取消分割 strtok 字符串?

标签 c strtok

我扫描了一个文本文件并使用 strtok 分割了字符串。分隔符是所有标点符号。我现在想取消分割文件,以便它恢复到原始状态。有没有办法做到这一点?或者我应该再次加载文件?

最佳答案

对于单个分隔符

char *unsplit(char *buff, char **argv, size_t size, int delimiter)
{
    size_t pos = 0;

    for (size_t index; index < size; index++)
    {
        strcpy(buff + pos, argv[index]);
        pos += strlen(argv[index]);
        if(index != size - 1) 
        {
            buff[pos++] = delimiter;
            buff[pos] = 0;
        }
    }
    return buff;
}

char *unsplitNULL(char *buff, char **argv, int delimiter)
{
    size_t pos = 0;

    while(*argv)
    {
        strcpy(buff + pos, *argv);
        pos += strlen(*argv++);
        if(*argv) 
        {
            buff[pos++] = delimiter;
            buff[pos] = 0;
        }
    }
    return buff;
}

int main()
{

    char *str[] = {"3443", "erte", "sdfdsffd", "wewere", NULL};
    char buff[100];
    printf("%s\n", unsplit(buff, str, 4, ','));
    printf("%s\n", unsplitNULL(buff, str, ','));

    return 0;
}

关于c - 如何在 C 中取消分割 strtok 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56269631/

相关文章:

c - 第二次使用指针读取结构会出现段错误

c++ - 未定义与未指定与实现定义的行为

c - strtok() 如何在 C 中将字符串拆分为标记?

c - "incompatible type for argument 1 of ‘strcpy’ “C 中的错误

C++使用Strtok读取字符串字符时出错

c - strtok 添加额外的行?

c - 反转指向数组的指针

c++ - 象限查询

c++ - Linphone 编译 - Mingw 64 位 - 未找到 GNU gettext 工具;国际工具所需

c - 我需要释放 strtok 结果字符串吗?