C库 - strspn() 函数



C库函数`strspn()`用于查找仅包含另一个字符串(str2)中存在的字符的前缀(str1)的长度。

它通过接受任意两个字符串作为输入,允许轻松定制。因此,这使得能够比较不同的字符集和字符串。

语法

以下是C库函数`strspn()`的语法:

size_t strspn(const char *str1, const char *str2)

参数

此函数接受以下参数:

  • str1 − 这是要扫描的主要C字符串。

  • str2 − 这是包含要在str1中匹配的字符列表的字符串。

返回值

此函数返回str1初始段中仅由str2中的字符组成的字符数。

示例1

我们使用C库函数`strspn()`演示了对给定字符串中两个前缀子串的比较,并找到其长度。

#include <stdio.h>
#include <string.h>

int main () {
   int len;
   const char str1[] = "ABCDEFG019874";
   const char str2[] = "ABCD";

   len = strspn(str1, str2);

   printf("Length of initial segment matching %d\n", len );
   
   return(0);
}

输出

以上代码产生以下结果:

Length of initial segment matching 4

示例2

下面的C程序使用函数`strspn()`从给定字符串中过滤掉非字母字符。(原文此处似乎有误,应为strspn())

#include <stdio.h>
#include <string.h>

const char* low_letter = "qwertyuiopasdfghjklzxcvbnm";

int main() {
   char s[] = "tpsde312!#$";

   size_t res = strspn(s, low_letter);
   printf("After skipping initial lowercase letters from '%s'\nThe remainder becomes '%s'\n", s, s + res);
   
   return 0;
}

输出

代码执行后,我们得到以下结果:

After skipping initial lowercase letters from 'tpsde312!#$'
The remainder becomes '312!#$'

示例3

下面的程序说明了使用`strspn()`查找主字符串中前缀子串的长度。

#include <stdio.h>
#include <string.h> 
  
int main () { 
   int leng = strspn("We are Vertos", "We"); 
   printf("Length of initial characters matching : %d\n", leng );     
   return 0; 
} 

输出

执行上述代码后,我们得到以下结果:

Length of initial characters matching : 2
广告