自己实现strtok函数(源代码)
By Minidxer | February 4, 2008
在C语言中利用strtok函数进行字符串分割中的strtok功能强大,可以对指定的字符串进行分割,那这样的处理实际上是如何实现的呢?实际上这样的实现并不复杂,下面给出实现的源代码以及使用的具体例子。
函数定义:
char *mystrtok(char *str, char *ctrl)
参数说明:
str是输入的字符串,*ctrl是用来分割str的控制符。
返回值:
返回第一个被分割后字符串
函数实现:
Download: mystrtok.c
- char *mystrtok(char *str, char *ctrl)
- {
- char *p=str,*q=ctrl,*r;
- while(p&&q&&*p&&*q){
- for(r=p,q=ctrl;*r&&*q&&*r==*q;r++,q++);
- if(q&&*q) p++; // 不匹配,从下一个字符开始比较
- else {*p='\0'; break;} // 首次找到则返回
- }
- return str;
- }
使用例子:
Download: mystrtok_sample.c
- #include <cstdlib>
- #include <iostream>
- using namespace std;
- char *mystrtok(char *, char *);
- int main(int argc, char *argv[])
- {
- int cnt=0;
- char a[]="abcdefg";
- char b[]="de";
- char c[]="xxx";
- printf("%s\n",mystrtok(a,NULL)); // 特例
- printf("%s\n",mystrtok(NULL,b)); // 特例
- printf("%s\n",mystrtok(a,c)); // 找不到
- printf("%s\n",mystrtok(a,b)); // 命中!结果是:abc
- system("PAUSE");
- return 0;
- }
Topics:
程序开发相关 |
1 Comment » |
378 views
Tags: strtok, 函数, 参数, 字符串, 源代码, 返回值
i guess u didnt go through usage of ’strtok’ carefully…coz i didnt c a static variable in ur source code…