C语言strcspn()函数:计算字符串str中连续有几个字符都不属于字符串accept
size_t strcspn(const char str, const char accept);
本质是两个string找交集,
主要用途是令后者是char 如此查找特征char 和strstr返回值不同。
#include <string.h>
#include<stdio.h>
main()
{
const char *str = "Linux 232/485";
printf("%d\n", strcspn(str, " "));//5--第一个“ ”出现的地方 返回ID
printf("%s\n", strstr (str, " "));// 232/485--第一个“ ”出现的地方返回string
printf("%d\n", strcspn(str, "/-"));//9--和上面一样 起作用的是 / 代表第一个/出现的地方
printf("%d\n", strcspn(str, "1234567890"));//6--和上面一样 起作用的是‘2’ 第一个2出现的地方
printf("%d\n", strcspn(str, "ABC"));//12--如果没有交集就返回str的strlen。
}
C语言strcspn()函数:计算字符串str中连续有几个字符都属于字符串accept
int strspn(char *str, char *accept);
概念上后面的字符串应该是全集,前面的字符串是子集,才有意义。
比如上面的程序中strcspn全部改为strspn全部是0 因为前者没有字符属于后者。
并且头部是确定的,第一个char都不同的话直接就是返回0,没有交集。
main()
{
const char *str = "Linux 232/485";
printf("%d\n", strspn (str, " "));//0 前者开头不是“ ”就废止了
printf("%d\n", strspn(str, "L"));//1--第一个“L”属于后者
printf("%d\n", strspn(str, "Linux is big"));//6--[Linux ]这6个属于后者
}
char *strpbrk(const char *str1, const char *str2)
检索字符串 str1 中第一个匹配字符串 str2 中字符的字符,不包含空结束字符。也就是说,依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置。
该函数和strstr比例相像,他更加疯狂,它在子串中是不看前后顺序的。
#include <stdio.h>
#include <string.h>
int main ()
{
const char str1[] = "abcde2fghi3jk4l";
const char str2[] = "34";
char *ret;
ret = strpbrk(str1, str2);
if(ret)
{
printf("第一个匹配的字符是: %c\n", *ret);
printf("第一个匹配的字符是: %s\n", ret);
}
else
{
printf("未找到字符");
}
return(0);
}
第一个匹配的字符是: 3
第一个匹配的字符是: 3jk4l
[Finished in 1.6s]
它不是严格在找子串,而是找一个一个的char 只要有一个匹配,那就算找到了。