首页 > 解决方案 > 如何正确使用 strsep() 解析数组?

问题描述

我正在尝试实现一个函数,该函数接受一个字符串来解析和分隔字符串作为输入,然后返回一个包含这些解析元素的 char 数组,如果两个分隔符相邻,则包括空字符。

以下是我当前的代码:

String* _split(String self, String delim) {
    char* selfCharArr = _get_value(self, NULL);
    char* delimCharArr = _get_value(delim, NULL);

    char** tokens = calloc((_length(self) + 2), sizeof(String));
    char* var;
    int index = 0;

    var = strsep(&selfCharArr, delimCharArr);
    while(var != NULL) {
        var = strsep(&selfCharArr, delimCharArr);
        tokens[index] = var;
        index++;
    }
    return (String*) tokens;
}

但是,在测试中我发现这只会返回一个 NULL 字符串,我不知道为什么。没有产生警告或错误,我已经查阅了手册页。

标签: cstringsplitdelimiterstrsep

解决方案


推荐阅读