zoukankan      html  css  js  c++  java
  • c strtok函数代码实现

    char * Mystrtok(char * string, const char * control)
    {
        unsigned char *str;
        const unsigned char *ctrl = (const unsigned char *)control;
    
        //注意这里使用了static类型,实际的strtok函数出于线程安全会使用TLS 
        static unsigned char* _TOKEN = NULL;
    
    
        static unsigned char map[32];     //赋初值
        int count;
    
        /* Clear control map */
        for (count = 0; count < 32; count++)
            map[count] = 0;
    
        /* Set bits in delimiter table */  //map为static变量,那么这个分隔符表只需要赋值一次即可
        if (NULL != string)
        {
            do {
                map[*ctrl >> 3] |= (1 << (*ctrl & 7));
            } while (*ctrl++);
        }
    
        /* Initialize str */
    
        /* If string is NULL, set str to the saved
         * pointer (i.e., continue breaking tokens out of the string
         * from the last strtok call)
         */
        if (string)
            str = (unsigned char *)string;
        else
            str = (unsigned char *)_TOKEN;
    
        /* Find beginning of token (skip over leading delimiters). Note that
         * there is no token iff this loop sets str to point to the terminal
         * null (*str == '')
         */
        while ((map[*str >> 3] & (1 << (*str & 7))) && *str)
            str++;
    
        string = (char*)str;
    
        /* Find the end of the token. If it is not the end of the string,
         * put a null there. */
        for (; *str; str++)
            if (map[*str >> 3] & (1 << (*str & 7))) {
                *str++ = '';
                break;
            }
    
        /* Update nextoken (or the corresponding field in the per-thread data
         * structure */
        _TOKEN = str;
    
        /* Determine if a token has been found. */
        if (string == (char*)str)
            return NULL;
        else
            return string;
    }

    标准库

    从此山高路远,纵马扬鞭。愿往后旅途,三冬暖,春不寒,天黑有灯,下雨有伞。此生尽兴,不负勇往。
  • 相关阅读:
    idea安装破解
    项目中邮件发送
    (转)四种复制文件的效率高低
    备份
    关于时间
    转 累加含小数点的数据:parseFloat、toFixed等
    转 Java将PDF转换成图片
    (转)JAVA实现SFTP实例
    获取浏览器参数
    js 中日期转换
  • 原文地址:https://www.cnblogs.com/feizianquan/p/14651439.html
Copyright © 2011-2022 走看看