关于strtok函数
2014-04-25 17:37 gongti 阅读(501) 评论(0) 收藏 举报函数原型:
char *strtok(char * strToken, const char *strDelimit)
参数说明:
strToken:源字符串,即待分割的串
strDelimit:strToken会根据这里的每个字符进行分割
返回值:
指向第一段被截取出来的字符串的指针,如果没有找到,则返回NULL。
调用说明:
(1)第一次调用strtok时,第一个参数是strToken。以后再调用时,第一个参数必须是NULL
(2)调用strtok后,源字符串会被修改
(3)strtok不是一个线程安全的函数
1: char str[] = "now # is the time for all # good men to come to the # aid of their country";2: char delims[] = "#";3: char *result = NULL;4: result = strtok( str, delims );5: while( result != NULL )6: {7: printf( "result is \"%s\"\n", result );8: result = strtok( NULL, delims );9: }
这个函数的应用:
HDU 2526 和 HDU 1106
#include<cstdio>#include<cstring>#include<algorithm>#define MAXN 1010using namespace std;char str[MAXN],*p;int num[MAXN];int main(){while (~scanf("%s",str)){int cnt=0;p=strtok(str,"5");while (p){num[cnt++]=atoi(p);p=strtok(NULL,"5");}sort(num,num+cnt);for(int i=0;i<cnt;i++)if(i+1==cnt) printf("%d\n",num[i]);else printf("%d ",num[i]);}return 0;}
#include<cstdio>#include<cstring>#include<cctype>#define MAXN 150using namespace std;char str1[MAXN],str2[MAXN];int main(){int t;char *p;scanf("%d",&t);getchar();while (t--){int cnt=0;gets(str1);p=strtok(str1," ");while (p){str2[cnt++]=toupper(*p);p=strtok(NULL," ");}str2[cnt]=0;printf("%s\n",str2);}return 0;}
浙公网安备 33010602011771号