基于memcached中命令分析函数tokenize_command改造的split函数
2015-04-10 17:55
369 查看
今天使用C重构php代码,需要手写一个split函数,于是就模仿memcached中获取用户命令的函数
写了一个简单的split函数:
好多年没有写过C了,基本上还停留在当初大学毕业的水平,呵呵。
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了,基本上还停留在当初大学毕业的水平,呵呵。
相关文章推荐
- 基于Mysql的IP处理函数inet_aton()与inet_ntoa()的深入分析
- 通过stats命令分析Memcached的内部状态
- PHP系统命令函数使用分析
- 探讨:如何通过stats命令分析Memcached的内部状态
- 基于Linux与Busybox的Reboot命令流程分析
- Memcached 源码分析——从 main 函数说起
- 基于mini2440的DM9000网卡驱动分析probe函数部分
- 通过stats命令分析Memcached的内部状态
- Redis源码分析系列十九:2 命令"echo"---echoCommand
- 通过stats命令分析Memcached的内部状态
- python的命令解析getopt.getopt()函数分析
- 通过stats命令分析Memcached的内部状态
- 基于visual c++之windows核心编程代码分析(44)监测任意程序函数起始地址
- Zebra-VTYSH源码分析和改造(三):添加定制命令
- [转载] MFC下关于“建立空文档失败”问题的分析二 ---ProcessShellCommand()函数分析
- 基于Ping命令的IP分片数据分析 (IP4)
- 基于visual c++之windows核心编程代码分析(44)监测任意程序函数起始地址
- 基于C++内存分配、函数调用与返回值的深入分析
- Memcached 源码分析——从 main 函数说起
- command 函数 AutoLisp 命令函数