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.

Return Value

These functions return the index of the first character in str that is in strCharSet. If none of the characters in str is in strCharSet, then the return value is the length of str.

No return value is reserved to indicate an error.

Remarks

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. For more information, see Locale.

Generic-Text Routine Mappings

TCHAR.H routine

_UNICODE & _MBCS not defined

_MBCS defined

_UNICODE defined

_tcscspn

strcspn

_mbscspn

wcscspn

n/a

n/a

_mbscspn_l

n/a

Requirements

Routine

Required header

strcspn

<string.h>

wcscspn

<string.h> or <wchar.h>

_mbscspn, _mbscspn_l

<mbstring.h>

For additional compatibility information, see Compatibility in the Introduction.

Example

// 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( "", "" );
}
strcspn( "xyzbxz", "abc" ) = 3
strcspn( "xyzbxz", "xyz" ) = 0
strcspn( "xyzbxz", "no match" ) = 6
strcspn( "xyzbxz", "" ) = 6
strcspn( "", "abc" ) = 0
strcspn( "", "" ) = 0

.NET Framework Equivalent

System::String::Substring

See Also

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