stGok_r为MinGW

sas*_*alm 11 c mingw strtok

strtok_r是strtok的可重入变体.符合POSIX标准.但是,MinGW缺少它,我正在尝试编译正在使用它的程序.

有没有什么办法可以添加这个函数的标准实现,可能是项目自己的代码,还是MinGW的标准库函数?

Mic*_*urr 14

由于有一些关于来自另一个答案的代码的许可证问题,这里是一个明确的公共领域:

/* 
 * public domain strtok_r() by Charlie Gordon
 *
 *   from comp.lang.c  9/14/2007
 *
 *      http://groups.google.com/group/comp.lang.c/msg/2ab1ecbb86646684
 *
 *     (Declaration that it's public domain):
 *      http://groups.google.com/group/comp.lang.c/msg/7c7b39328fefab9c
 */

char* strtok_r(
    char *str, 
    const char *delim, 
    char **nextp)
{
    char *ret;

    if (str == NULL)
    {
        str = *nextp;
    }

    str += strspn(str, delim);

    if (*str == '\0')
    {
        return NULL;
    }

    ret = str;

    str += strcspn(str, delim);

    if (*str)
    {
        *str++ = '\0';
    }

    *nextp = str;

    return ret;
}
Run Code Online (Sandbox Code Playgroud)