给定一个字符串,strspn计算仅由特定字符列表组成的初始子字符串的长度(跨度)。strcspn相似,不同之处在于它会计算初始子字符串的长度,该子字符串由除所列字符外的任何字符组成:
/* Provided a string of "tokens" 用...定界 "separators", print the tokens along with the token separators that get skipped. */ #include <stdio.h> #include <string.h> int main(void) { const char sepchars[] = ",.;!?"; char foo[] = ";ball call,.fall gall hall!?.,"; char *s; int n; for (s = foo; *s != 0; /*empty*/) { /* Get the number of token separator characters. */ n = (int)strspn(s, sepchars); if (n > 0) printf("skipping separators: << %.*s >> (length=%d)\n", n, s, n); /* Actually skip the separators now. */ s += n; /* Get the number of token (non-separator) characters. */ n = (int)strcspn(s, sepchars); if (n > 0) printf("token found: << %.*s >> (length=%d)\n", n, s, n); /* Skip the token now. */ s += n; } printf("== token list exhausted ==\n"); return 0; }
使用宽字符字符串的类似函数是wcsspn和wcscspn;它们的使用方式相同。