谁能给一个自己写的strtok函数?
char *mystrtok(char *str, char *ctrl)
str是输入的字符串,*ctrl是用来分割str的控制符。
返回第一个被分割后字符串
问题点数:100、回复次数:4Top
1 楼galois_godel()回复于 2005-08-24 18:43:07 得分 0
不就是字符串处理嘛Top
2 楼houbinbin()回复于 2005-08-25 10:18:22 得分 0
能给出源码吗?Top
3 楼xdop(鸿飞处)回复于 2005-08-26 15:30:46 得分 100
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;
}Top
4 楼xdop(鸿飞处)回复于 2005-08-26 15:33:44 得分 0
测试代码也顺便帖了
#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;
}
Top





