1 2 #include <limits.h> 3 #include <string.h> 4 5 size_t __cdecl _strxspn(const char *s1, const char *s2) 6 { 7 unsigned char char_map[1 << CHAR_BIT * sizeof(char)]; 8 const unsigned char * us2 = (const unsigned char *)s2; 9 const unsigned char * str = (const unsigned char *)s1; 10 11 memset(char_map, 0, sizeof(char_map)); 12 13 for(; *us2; ++ us2) 14 char_map[*us2 / CHAR_BIT] |= (1 << (*us2 % CHAR_BIT)); 15 16 for(; *str; ++ str) 17 if(_x(char_map[*str / CHAR_BIT] & (1 << (*str % CHAR_BIT)))) break; 18 19 return (size_t)str - (size_t)s1; 20 } 21 22 /* EOF */ 23