C语言是一种高效的语言。它允许程序员写出跟系统库一样高效的代码。会自己写标准库中大部分库函数是C程序员的基本功。
这里介绍一个strtok代码的实现。偶尔不想使用系统时,可以试试这个代码。它没有调用别的函数。
char *str_tok(char *s, char *delims, char **save)
{
int ra;
char *p;
char *q;
char *t;
if (*s=='\0') return NULL;
ra=1;
q =s;
goto check;
label_a1:
if (*p) {
q++;
if (*q) goto check;
return NULL;
}
t = q;
++q;
++ra;
check:
p = delims;
while(*p && *q != *p) p++;
if (ra==1) goto label_a1;
if (*p) {
*q++ = '\0';
*save =q;
}
else {
q++;
if (*q) goto check;
else *save =q;
}
return t;
}
下面是测试程序:
int main()
{
char s[100];
char *p, *sa;
printf("> ");
while(gets(s)) {
sa = s;
while((p=str_tok(sa, "\t ", &sa))) {
printf("[%s]\n", p);
}
printf("> ");
}
return 0;
}