C 如何正确使用strep()解析数组?

C 如何正确使用strep()解析数组?,c,string,split,delimiter,strsep,C,String,Split,Delimiter,Strsep,我正在尝试实现一个函数,该函数将要解析的字符串和分隔符字符串作为输入,然后返回一个包含这些已解析元素的字符数组,如果两个分隔符相邻,则返回空字符 以下是我目前的代码: String* _split(String self, String delim) { char* selfCharArr = _get_value(self, NULL); char* delimCharArr = _get_value(delim, NULL); char** tokens = cal

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

以下是我目前的代码:

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;
}

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

您是否尝试在调试器中单步执行代码以查看发生了什么情况?我没有,您能推荐一个好的C调试器吗?我刚刚用notepad++写了一篇文章,你是如何构建你的源代码的?您使用什么环境和工具来构建和运行?我至少要添加
assert(index<\u length(self)+2)
标记[索引]
之前作为第一个度量。另外,为什么您有
char**token
而您分配
calloc(…,sizeof(String))
?我认为在循环中只使用
realloc
tokens
指针会更好