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
проверяет свои параметры. Если указатель str
strCharSet
имеет значение 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