静态变量的应用:strtok的实现
借助strtok去除 " 想要剔除"符号
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char str[] = "- this, a sample - string, OK .";
char *p = strtok(str," ,.-s");
while(p != NULL){ // 不为 null 说明找到一个子串
cout<< p<< endl;
p = strtok(NULL," ,.-s");
}
return 0;
}
自己实现这个库函数并应用剔除给定字符串的指定字符
#include<iostream>
using namespace std;
#include<cstring>
char *My_Strtok(char *p , char *sep){
static char *start; // 静态变量每次调用的起点
if(p)
start = p;
for(;*start && strchr(sep,*start);start++); // 跳过要剔除的符号
if(*start == 0)
return NULL;
char *q = start;
for(;*start && !strchr(sep,*start);start++); // 跳过不要剔除的符号
if(*start){
*start = 0;
start++;
}
return q;
}
int main(){
char str[] = "- this, a sample - string, OK .";
char *p = My_Strtok(str," ,.-s");
while(p != NULL){ // 不为 null 说明找到一个子串
cout<< p<< endl;
p = My_Strtok(NULL," ,.-s");
}
return 0;
}