所以我有一个字符串:
**BOB**123(*&**blah**02938*(*&91820**FOO**
Run Code Online (Sandbox Code Playgroud)
我希望能够用来strtok消除每个单词.分隔符是每个不是字母的单个字符.
我被建议给我们isalpha,但不知道我会怎么做.有没有办法在不指定每个非字母字符的情况下执行此操作?
不幸的是,不允许使用正则表达式库.
#include <stdio.h>
#include <ctype.h>
char *strtok_t(char *str, int (*test)(int ch)){
static char *store = NULL;
char *token;
if(str != NULL){
store = str;
}
if(store == NULL) return NULL;
while(*store && !test(*store)){//skip delimiter
++store;
}
if(*store == '\0') return NULL;
token=store;
while(*store && test(*store)){
++store;
}
if(*store == '\0'){
store = NULL;
} else {
*store++ = '\0';
}
return token;
}
int main(void){
char str[128] = "BOB123(&blah02938(*&91820FOO";
char *token;
for(token = strtok_t(str, isalpha); token ; token = strtok_t(NULL, isalpha)){
printf("%s\n", token);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2750 次 |
| 最近记录: |