strcspn() strspn() strpbrk()

本文详细介绍了C语言中处理字符串的几个关键函数,包括strcspn()、strspn()和strpbrk()。通过实例展示了如何使用这些函数来计算字符串中特定字符的连续出现次数、查找字符串中首次出现的指定字符等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 只要有一个匹配,那就算找到了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值