strcspn, wcscspn, _mbscspn, _mbscspn_l
Returns the index of the first occurrence of a character in a string that belongs to a set of characters.
size_t strcspn( const char *str, const char *strCharSet ); size_t wcscspn( const wchar_t *str, const wchar_t *strCharSet ); size_t _mbscspn( const unsigned char *str, const unsigned char *strCharSet ); size_t _mbscspn( const unsigned char *str, const unsigned char *strCharSet, _locale_t locale );
Parameters
- str
-
Null-terminated searched string.
- strCharSet
-
Null-terminated character set.
- locale
-
Locale to use.
wcscspn and _mbscspn are wide-character and multibyte-character versions of strcspn. The arguments of wcscspn are wide-character strings; those of _mbscspn are multibyte-character strings.
_mbscspn validates its parameters. If either str or strCharSet is a null pointer, the invalid parameter handler is invoked, as described in Parameter Validation. If execution is allowed to continue, the function returns 0 and sets errno to EINVAL. strcspn and wcscspn do not validate their parameters. These three functions behave identically otherwise.
The output value is affected by the setting of the LC_CTYPE category setting of the locale; see setlocale for more information. The versions of these functions without the _l suffix use the current locale for this locale-dependent behavior; the versions with the _l suffix are identical except that they use the locale parameter passed in instead.
| TCHAR.H routine | _UNICODE & _MBCS not defined | _MBCS defined | _UNICODE defined |
|---|---|---|---|
| _tcscspn | strcspn | _mbscspn | wcscspn |
| n/a | n/a | _mbscspn_l | n/a |
| Routine | Required header | Compatibility |
|---|---|---|
| strcspn | <string.h> | ANSI, Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition, Windows NT 4.0, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 |
| wcscspn | <string.h> or <wchar.h> | ANSI, Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition, Windows NT 4.0, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 |
| _mbscspn, _mbscspn_l | <mbstring.h> | Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition, Windows NT 4.0, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 |
For additional compatibility information, see Compatibility in the Introduction.
// crt_strcspn.c
#include <string.h>
#include <stdio.h>
void test( const char * str, const char * strCharSet )
{
int pos = strcspn( str, strCharSet );
printf( "strcspn( \"%s\", \"%s\" ) = %d\n", str, strCharSet, pos );
}
int main( void )
{
test( "xyzbxz", "abc" );
test( "xyzbxz", "xyz" );
test( "xyzbxz", "no match" );
test( "xyzbxz", "" );
test( "", "abc" );
test( "", "" );
}
Output
strcspn( "xyzbxz", "abc" ) = 3 strcspn( "xyzbxz", "xyz" ) = 0 strcspn( "xyzbxz", "no match" ) = 6 strcspn( "xyzbxz", "" ) = 6 strcspn( "", "abc" ) = 0 strcspn( "", "" ) = 0
Reference
String Manipulation (CRT)Locale
Interpretation of Multibyte-Character Sequences
strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l
strspn, wcsspn, _mbsspn, _mbsspn_l