strspn函数

int len1, len2;
char buffer[] = "25,142,330,Smith,J,239-4123";

len1 = strspn( buffer, "0123456789");
len2 = strspn( buffer, ",0123456789");

len1和len2的值分别是2和11

 

The  strspn() function returns the number of characters in the initial segment of s which consist only of characters from accept.

返回的len等于从buffer字符串开头算起 匹配"0123456789"中的任意一个字符 直到buffer中出现字符不匹配"0123456789" 算结束,这段匹配"0123456789"的长度 就是返回值

len1的情况:buffer[0] = "2" 匹配, buffer[1]="5" 匹配,buffer[2]=","后面的字符串找不到匹配的,结束,所以长度是2.

`strcspn`函数和`strspn`函数在功能上相反。 `strspn`函数用于从字符串的开头计算连续的字符,这些字符都完全在指定的字符串中。例如,对于字符串`str = "xnufux dfafa"`和字符串`accept = "linux"`,字符`'x'` `'n'` `'u'`都在`"linux"`里面,然后字符`'f'`不在`"linux"`里面,所以函数返回值为3 [^2]。 `strcspn`函数则是从字符串的开头计算连续的字符,而这些字符都完全不在指定的字符串中。若`strcspn`返回的数值为`n`,则代表字符串开头连续有`n`个字符都不是指定字符串中的字符。例如,对于字符串`str = "adgagaded"`和字符串`str1 = "hlllfl"`,`str`前9个字符均不属于`str1`,所以`strcspn(str, str1)`返回9 [^1]。 ### 代码示例 ```c #include <stdio.h> // strspn函数示例 int str_spn(const char *s, const char *accept) { const char *p; const char *a; int count = 0; for (p = s; *p != '\0'; ++p) { for (a = accept; *a != '\0'; ++a) { if (*p == *a) { count++; break; } } if (*a == '\0') return count; } return count; } int main() { char str[20] = "adgagaded"; char str1[20] = "hlllfl"; char str2[20] = "lllfgl"; const char *s = "chechechellochenyu"; const char *accept = "chne"; // strspn函数调用 int result_spn = str_spn(s, accept); printf("strspn result is %d\n", result_spn); // strcspn函数调用 printf("strcspn(%s, %s) result is %d\n", str, str1, strcspn(str, str1)); printf("strcspn(%s, %s) result is %d\n", str, str2, strcspn(str, str2)); return 0; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值