C语言strspn和strcspn
示例
给定一个字符串,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;它们的使用方式相同。