C语言练习之 字符串 strspn

  今天看了一下c语言经典著作《C和指针》,第九章讲到了strspn函数,因为看的是中文版,

语言描述有点出入,特别是书中的例子没能够看懂,笔者于是在网上一通找资源,网上是这样

描述的:

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

该函数返回 str1 中第一个不在字符串 str2 中出现的字符下标。

仍然有些抽象,于是根据网上的例子测试了一下:
#include <stdio.h>
#include <string.h>

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

   len = strspn(str1, str2);

   printf("初始段匹配长度 %d\n", len );
   
   return(0);
}
View Code

  测试结果为4,有了上述的例子,笔者将《C和指针》书中的例子转换成了代码:

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


#define TRUE 1
#define FALSE 0

char buffer[] = "25,142,330,simth,J,239-4123";
//char buffer[] = "25,142,330";

int main(int argc, char *argv) {

    int len1 = strspn(buffer, " 0123456789");
    int len2 = strspn(buffer,",0123456789");
    
    printf("buffer=%s\n",buffer);
    printf("len1=%d\n",len1);
    printf("len2=%d\n",len2);

    /*int len;
    const char str1[] = "12-CDEFG019874";
    const char str2[] = "ABCD";

    len = strspn(str1, "CDAB123");

    printf("初始段匹配长度 %d\n", len);*/

}

 

  根据测试的结果,这个函数说白了就是统计源字符串中和目标字符串中匹配的字符个数

于是第一段中只有“25”,所以显示为len1=2;第二段中有“25,142,330”,所以统计结果是11。

因此在vs2015运行结果:

posted @ 2019-08-06 20:15  flyingswallow  阅读(350)  评论(0编辑  收藏  举报