9.6 高级字符串查找
接下来的一组函数简化了从一个字符串中查找和抽取一个子串的过程。
9.6.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起始部分空白字符的数目。str的下一个字符就是它的第1个非空白字符。
考虑下面这个例子:
int len1, len2;
char buffer[] = "25,142,330,Smith,J,239-4123";
len1 = strspn( buffer, "0123456789" );
len2 = strspn( buffer, ",0123456789" );
当然,buffer缓冲区在正常情况下不会用这个方法进行初始化的。它将包含在运行时读取的数据。但是在buffer中有了这个值之后,变量len1将被设置为2,变量len2将被设置为11。下面的代码将计算一个指向字符串中第1个非空白字符的指针。
ptr = buffer + strspn( buffer, "\n\r\f\t\v" );
strcspn函数和strspn恰好相反,它对str字符串起始部分不与group中任何字符匹配的字符进行计数。strcspn这个名字中的字母c来源于对一组字符求补这个概念,也就是
C和指针 第9章 字符串、字符和字节 9.6 高级字符串查找
于 2022-06-21 08:37:52 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)