⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 strspn.c

📁 linux内核
💻 C
字号:
/* * strspn, strcspn */#include <string.h>#include <stddef.h>#include <inttypes.h>#include <limits.h>#ifndef LONG_BIT#define LONG_BIT (CHAR_BIT*sizeof(long))#endifstatic inline voidset_bit(unsigned long *bitmap, unsigned int bit){  bitmap[bit/LONG_BIT] |= 1UL << (bit%LONG_BIT);}static inline inttest_bit(unsigned long *bitmap, unsigned int bit){  return (int)(bitmap[bit/LONG_BIT] >> (bit%LONG_BIT)) & 1;}static size_tstrxspn(const char *s, const char *map, int parity){  unsigned long matchmap[((1 << CHAR_BIT)+LONG_BIT-1)/LONG_BIT];  size_t n = 0;  /* Create bitmap */  memset(matchmap, 0, sizeof matchmap);  while ( *map )    set_bit(matchmap, (unsigned char) *map++);  /* Make sure the null character never matches */  if ( parity )    set_bit(matchmap, 0);  /* Calculate span length */  while ( test_bit(matchmap, (unsigned char) *s++)^parity )    n++;  return n;}size_tstrspn(const char *s, const char *accept){  return strxspn(s, accept, 0);}size_tstrcspn(const char *s, const char *reject){  return strxspn(s, reject, 1);}char *strpbrk(const char *s, const char *accept){  const char *ss = s+strxspn(s, accept, 1);    return *ss ? (char *)ss : NULL;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -