您的位置:首页 > 数据库 > Memcache

基于memcached中命令分析函数tokenize_command改造的split函数

2015-04-10 17:55 369 查看
今天使用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 = '\0';
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了,基本上还停留在当初大学毕业的水平,呵呵。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: