2000-02-18 03:39:52 +08:00
|
|
|
/*
|
|
|
|
FUNCTION
|
2005-10-29 05:21:08 +08:00
|
|
|
<<strcspn>>---count characters not in string
|
2000-02-18 03:39:52 +08:00
|
|
|
|
|
|
|
INDEX
|
|
|
|
strcspn
|
|
|
|
|
2017-11-30 16:20:06 +08:00
|
|
|
SYNOPSIS
|
2000-02-18 03:39:52 +08:00
|
|
|
size_t strcspn(const char *<[s1]>, const char *<[s2]>);
|
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
This function computes the length of the initial part of
|
|
|
|
the string pointed to by <[s1]> which consists entirely of
|
|
|
|
characters <[NOT]> from the string pointed to by <[s2]>
|
|
|
|
(excluding the terminating null character).
|
|
|
|
|
|
|
|
RETURNS
|
|
|
|
<<strcspn>> returns the length of the substring found.
|
|
|
|
|
|
|
|
PORTABILITY
|
|
|
|
<<strcspn>> is ANSI C.
|
|
|
|
|
|
|
|
<<strcspn>> requires no supporting OS subroutines.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
size_t
|
2017-12-04 11:43:30 +08:00
|
|
|
strcspn (const char *s1,
|
2017-12-04 10:25:16 +08:00
|
|
|
const char *s2)
|
2000-02-18 03:39:52 +08:00
|
|
|
{
|
2017-12-04 10:25:16 +08:00
|
|
|
const char *s = s1;
|
|
|
|
const char *c;
|
2000-02-18 03:39:52 +08:00
|
|
|
|
|
|
|
while (*s1)
|
|
|
|
{
|
|
|
|
for (c = s2; *c; c++)
|
|
|
|
{
|
|
|
|
if (*s1 == *c)
|
2023-12-15 16:31:01 +08:00
|
|
|
goto end;
|
2000-02-18 03:39:52 +08:00
|
|
|
}
|
|
|
|
s1++;
|
|
|
|
}
|
2023-12-15 16:31:01 +08:00
|
|
|
end:
|
2000-02-18 03:39:52 +08:00
|
|
|
return s1 - s;
|
|
|
|
}
|