高级字符串查找
2015-11-07 12:56
344 查看
(以下三个函数都需要添加头文件<string.h>)
1.查找一个字符串前缀
strspn和strcspn函数用于在字符串的起始位置对字符计数。他们的原型如下:
group字符串指定一个或多个字符。strspn返回str起始部分匹配group任意字符的字符数目。例如,如果group包含了空格、制表符和空白字符,那么这个函数将返回str起始部分空白字符的数目。
如下面这个例子:
strcspn函数和strspn函数正好相反,它对str字符串起始部分中不与group中任何字符匹配的字符进行计数。下面的代码将计算一个指向字符串中第一个空白字符的指针。
2.查找标记
一个字符串常常包含几个单独的部分,strtok函数则可以从字符串中隔离各个单独的称为标记(token)的部分,并丢弃分隔符。它的原型如下:
char *strtok( char *str, char const *sep );
sep参数是个字符串,定义了用作分隔符的字符标记。str参数指定一个字符串,它包含零个或多个由sep字符串中一个或多个分隔符分隔的标记。strtok找到str的下一个标记,并将其用NUL结尾,然后返回一个指向这个标记的指针。需要注意的是,当strtok执行时,它会改变源字符串。如果源字符串不能被修改,那就传递源字符串的一份拷贝给strtok函数。
如果strtok函数的第一个参数不是NULL,函数将找到字符串的第一个标记。strtok同时将保存它在字符串中的位置。如果strtok函数的第一个参数是NULL,函数就在同一个字符串中从这个被保存的位置开始查找下一个标记。如果不存更多标记,strtok函数就返回一个NULL指针。
下面是一个简短的函数,这个函数将字符串的标记(用','分隔)一一打印出来。
1.查找一个字符串前缀
strspn和strcspn函数用于在字符串的起始位置对字符计数。他们的原型如下:
size_t strspn( char const *str, char const *group ); size_t strcspn( char const *str, char const *group );
group字符串指定一个或多个字符。strspn返回str起始部分匹配group任意字符的字符数目。例如,如果group包含了空格、制表符和空白字符,那么这个函数将返回str起始部分空白字符的数目。
如下面这个例子:
int len1, len2; char string[] = "25,142,330,Smith,J,239-4123"; len1 = strspn( string, "0123456789" ); len2 = strspn( string, ",0123456789" );运行完以上程序后,变量len1将被设置为2,变量len2将被设置为11.下面的代码将计算一个指向字符串中第一个非空白字符的指针。
ptr = string + strspn( string, "\n\r\f\t\v" );
strcspn函数和strspn函数正好相反,它对str字符串起始部分中不与group中任何字符匹配的字符进行计数。下面的代码将计算一个指向字符串中第一个空白字符的指针。
ptr = string + strcspn( string, "\n\r\f\t\v" );
2.查找标记
一个字符串常常包含几个单独的部分,strtok函数则可以从字符串中隔离各个单独的称为标记(token)的部分,并丢弃分隔符。它的原型如下:
char *strtok( char *str, char const *sep );
sep参数是个字符串,定义了用作分隔符的字符标记。str参数指定一个字符串,它包含零个或多个由sep字符串中一个或多个分隔符分隔的标记。strtok找到str的下一个标记,并将其用NUL结尾,然后返回一个指向这个标记的指针。需要注意的是,当strtok执行时,它会改变源字符串。如果源字符串不能被修改,那就传递源字符串的一份拷贝给strtok函数。
如果strtok函数的第一个参数不是NULL,函数将找到字符串的第一个标记。strtok同时将保存它在字符串中的位置。如果strtok函数的第一个参数是NULL,函数就在同一个字符串中从这个被保存的位置开始查找下一个标记。如果不存更多标记,strtok函数就返回一个NULL指针。
下面是一个简短的函数,这个函数将字符串的标记(用','分隔)一一打印出来。
//从一个字符数组中提取逗号分隔的标记并把他们打印出来 void PrintTokens( char *line ) { char *token; token = strtok( line, "," ); while( token!=NULL ){ puts(token); token=strtok( NULL, "," ); } }
相关文章推荐
- 《maven实战》读书笔记
- iOS searchBar最近搜索结果的实现
- 图像处理(二)——使用HSI和HSV颜色空间来调整图像颜色
- PHP程序员 新人求职 平台
- 使用systemb过程
- 2015 CCPC C题(超时代码)
- ubuntu下手把手教你搭建SVN服务器
- Pahom on Water(最大流)
- 基于js与flash实现的网站flv视频播放插件代码
- 电源调试记录五
- POJ3126 (bfs)
- recyclerview设置布局样式
- Java线程池及Future、Callable获得线程返回结果【Java线程池系列2】
- SET Transaction Isolation Level Read语法的四种情况
- gulp-jade报错unexpected token:punc {{}}}与ng-annotate报错error parse
- HDU 4501 3重01背包
- 第一次用字符串
- hdu 1171 Big Event in HDU (01背包)
- codeforces-479B-Towers
- html5兼容IE