strcspn, wcscspn, _mbscspn, _mbscspn_l

Возвращает индекс первого вхождения в строке символа, который относится к набору символов.

Важно!

Функции _mbschr и _mbschr_l не могут использоваться в приложениях, запускаемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.

Синтаксис

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_l(
   const unsigned char *str,
   const unsigned char *strCharSet,
   _locale_t locale
);

Параметры

str
Строка, завершающаяся символом NULL, для поиска.

strCharSet
Набор символов, завершающийся символом NULL.

locale
Используемый языковой стандарт.

Возвращаемое значение

Эти функции возвращают индекс первого символа в str, который находится в strCharSet. Если ни один из символов в str не находится в strCharSet, то возвращаемое значение представляет собой длину str.

Нет зарезервированных возвращаемых значений для указания ошибки.

Замечания

Функции wcscspn и _mbscspn являются версиями функции strcspn для расширенных и многобайтовых символов. Аргументы wcscspn являются строками расширенных символов. Аргументы и возвращаемое значение _mbscspn являются многобайтовыми строками.

Кроме того, функция _mbscspn проверяет свои параметры. Если указатель strstrCharSet имеет значение NULL, вызывается обработчик недопустимых параметров, как описано в разделе "Проверка параметров". Если выполнение может быть продолжено, функция возвращает 0 и устанавливает errno в значение EINVAL. strcspn и wcscspn не проверяйте их параметры. В остальном эти три функции ведут себя идентично.

Выходное значение зависит от параметра LC_CTYPE категории языкового стандарта. Дополнительные сведения см. в разделе setlocale. Версии этих функций без суффикса _l используют текущий языковой стандарт для данного поведения, зависимого от языкового стандарта. Версии с суффиксом _l идентичны, однако они используют переданный параметр языкового стандарта. Дополнительные сведения см. в разделе Locale.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Сопоставления подпрограмм универсального текста

Подпрограмма TCHAR.H _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcscspn strcspn _mbscspn wcscspn

Требования

Маршрут Обязательный заголовок
strcspn <string.h>
wcscspn <string.h> или <wchar.h>
_mbscspn, _mbscspn_l <mbstring.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// 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

См. также

Обработка строк
Локаль
Интерпретация последовательностей многобайтовых символов
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