自己实现strtok函数(源代码)

By Minidxer | February 4, 2008

C语言中利用strtok函数进行字符串分割中的strtok功能强大,可以对指定的字符串进行分割,那这样的处理实际上是如何实现的呢?实际上这样的实现并不复杂,下面给出实现的源代码以及使用的具体例子。


函数定义:
char *mystrtok(char *str, char *ctrl)
参数说明:
str是输入的字符串,*ctrl是用来分割str的控制符。
返回值:
返回第一个被分割后字符串

函数实现:

Download: mystrtok.c
  1. char *mystrtok(char *str, char *ctrl)
  2. {
  3.      char *p=str,*q=ctrl,*r;
  4.      while(p&&q&&*p&&*q){
  5.          for(r=p,q=ctrl;*r&&*q&&*r==*q;r++,q++);
  6.          if(q&&*q) p++; // 不匹配,从下一个字符开始比较
  7.          else {*p='\0'; break;} // 首次找到则返回
  8.      }
  9.      return str;
  10. }

使用例子:

  1. #include <cstdlib>
  2. #include <iostream>
  3. using namespace std;
  4. char *mystrtok(char *, char *);
  5. int main(int argc, char *argv[])
  6. {
  7.     int cnt=0;
  8.     char a[]="abcdefg";
  9.     char b[]="de";
  10.     char c[]="xxx";
  11.     printf("%s\n",mystrtok(a,NULL)); // 特例
  12.     printf("%s\n",mystrtok(NULL,b)); // 特例
  13.     printf("%s\n",mystrtok(a,c)); // 找不到
  14.     printf("%s\n",mystrtok(a,b)); // 命中!结果是:abc
  15.     system("PAUSE");
  16.     return 0;
  17. }

Topics: 程序开发相关 | 1 Comment » | 378 views Tags: , , , , ,

Search Posts

赞助商链接

Archives