C split string函数在字符串末尾返回\ 377而不是\ 0。为什么?

时间:2017-08-09 19:29:41

标签: c

我试图在C中实现一个小的splitStringByString()函数,这是我到目前为止的方式:

for i in bs0bj.find_all(id="gift1"):
    print(i.get_text())
    print(i.img.get('src'))

所以它或多或少都有效; 该函数根据需要返回分隔符后的字符串,但在此字符串的末尾(最后一个字符)始终为\ 377。 我已经发现一些东西说这是一个八进制数左右({{3}}),但对我来说不是很清楚。你能帮帮我,给我一些关于我做错了什么的建议吗?

非常感谢! : - )

1 个答案:

答案 0 :(得分:2)

我不理解你的代码,但要做你在评论中提到的内容

char *splitSstring(char *haystack, char *separator)
{
    char *result = (haystack == NULL || separator == NULL || !strlen(haystack) || !strlen(separator)) ? NULL : haystack;

    if (result != NULL)
    {
        result = strstr(haystack, separator);
        if (result != NULL) result += strlen(separator);
    }
    return result;
}

或者如果你想将它放在单独的字符串中

char *splitSstring(char *haystack, char *separator, char *res)
{
    char *result = (haystack == NULL || separator == NULL || !strlen(haystack) || !strlen(separator)) ? NULL : haystack;

    if (result != NULL)
    {
        result = strstr(haystack, separator);
        if (result != NULL)
        {
            result = result + strlen(separator);
            if(res == NULL) res = malloc(strlen(result) + 1);
            if(res != NULL) strcpy(res, result);
            result = res;
        }
    }
    return result;
}

您可以为函数提供自己的缓冲区,或者如果传递NULL,它将为您分配。但你需要记住释放它;