zoukankan      html  css  js  c++  java
  • 基于memcached中命令分析函数tokenize_command改造的split函数

    今天使用C重构php代码,需要手写一个split函数,于是就模仿memcached中获取用户命令的函数

    static size_t tokenize_command(char *command, token_t *tokens, const size_t max_tokens)

    写了一个简单的split函数:

    #include<stdio.h>
    #include<string.h>
    #include<malloc.h>
    
    typedef struct node {
        char *value;
        struct node *next;
    }Node;
    
    
    /**
     * 字符串切割函数
     * pattern 字符参数      切割符参数,分隔字符串所使用的参数
     * str     字符串参数    被分切割的字符串
     * data    链表      用于存储切割完的字符串
     * 失败    返回 1
     * 成功    返回 0
     */
    Node *split(char pattern,char *str)
    {
        if(!pattern || (strlen(str) <= 0)) return NULL;
        char *e,*s;
        Node *data,*p,*tail;
        unsigned int i,len = strlen(str);
        e = s = str;
        data = (Node *)malloc(sizeof(Node));
        tail = data;
        tail->next = NULL;
        tail->value = "";
    
        for(i = 0;i<len;i++)
        {
            if(*e == pattern)
            {
                if(s != e)
                {
                    p=(Node *)malloc(sizeof(Node));
                    p->value = s;
                    p->next = NULL;
    
                    tail->next = p;
                    tail = p;
    
                    *e = '';
                    if(e == (str + len - 1))
                    {
                        e++;
                        s = e;
                        break;
                    }
    
                }
                s = e+1;
            }
            e++;
        }
    
        if(s != e)
        {
    
            p=(Node *)malloc(sizeof(Node));
            p->value = s;
            p->next = NULL;
            tail->next=p;
            tail=p;
        }
        return data;
    }

    好多年没有写过C了,基本上还停留在当初大学毕业的水平,呵呵。

  • 相关阅读:
    深入理解Javascript变量作用域
    phpcms v9取消验证码
    typecho去index.php
    cms与blog汇总
    phpcms修改增加编辑时摘要自动提取的数量
    phpcms后台主菜单不显示
    phpcms sitemaps修改
    phpcms打印数据
    phpcms tag页调用缩略图
    php自动添加相关文章
  • 原文地址:https://www.cnblogs.com/lrxing/p/4415335.html
Copyright © 2011-2022 走看看