strtok_r for MinGW

后端 未结 4 1938
独厮守ぢ
独厮守ぢ 2020-12-11 16:28

strtok_r is the reentrant variant of strtok. It is POSIX-conformant. However, it is missing from MinGW, and I\'m trying to compile a program that is using it.

Is the

4条回答
  •  [愿得一人]
    2020-12-11 16:48

    Since there are some license questions about the code from another answer, here's one that's explicitly public domain:

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

提交回复
热议问题