_strncnt, _wcsncnt, _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l

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

Важно!

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

Синтаксис

size_t _strncnt(
   const char *str,
   size_t count
);
size_t _wcsncnt(
   const wchar_t *str,
   size_t count
);
size_t _mbsnbcnt(
   const unsigned char *str,
   size_t count
);
size_t _mbsnbcnt_l(
   const unsigned char *str,
   size_t count,
   _locale_t locale
);
size_t _mbsnccnt(
   const unsigned char *str,
   size_t count
);
size_t _mbsnccnt_l(
   const unsigned char *str,
   size_t count,
   _locale_t locale
);

Параметры

str
Строка, которую необходимо проверить.

count
Число символов или байтов, которые нужно проверить в str.

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

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

_mbsnbcnt и _mbsnbcnt_l возвращают число байтов, найденных в первой части count многобайтовых символов в str. _mbsnccnt и _mbsnccnt_l возвращают число символов, найденных в первой части count байтов в str. Если до завершения проверки str обнаружен пустой символ, они возвращают количество байтов или символов, найденных до значения NULL. Если str состоит менее чем из count символов или байтов, они возвращают число символов или байтов в строке. Если count меньше нуля, они возвращают 0. В предыдущих версиях эти функции имели возвращаемое значение типа int, а не size_t.

_strncnt возвращает количество символов в первых count байтах однобайтовой строки str. _wcsncnt возвращает количество символов в первых count расширенных символах строки расширенных символов str.

Замечания

_mbsnbcnt и _mbsnbcnt_l подсчитывают число байтов, найденных в первой части count многобайтовых символов в str. _mbsnbcnt и _mbsnbcnt_l заменяют mtob и должны использоваться вместо mtob.

_mbsnccnt и _mbsnccnt_l подсчитывают число символов, найденных в первой части count байтов в str. Если _mbsnccnt и _mbsnccnt_l возникает значение NULL во втором байте двухбайтового символа, первый байт также считается null и не включается в возвращаемое значение счетчика. _mbsnccnt и _mbsnccnt_l заменяют btom и должны использоваться вместо btom.

Если str указатель countNULL равен 0, эти функции вызывают обработчик недопустимых параметров, как описано в разделе "Проверка параметров", имеет EINVALзначение , errno а функция возвращает значение 0.

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

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

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

Маршрут _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcsnbcnt _strncnt _mbsnbcnt _wcsncnt
_tcsnccnt _strncnt _mbsnbcnt Недоступно
_wcsncnt н/д н/д _mbsnbcnt
_wcsncnt н/д н/д _mbsnccnt
н/д Недоступно _mbsnbcnt_l _mbsnccnt_l

Требования

Маршрут Обязательный заголовок
_mbsnbcnt <mbstring.h>
_mbsnbcnt_l <mbstring.h>
_mbsnccnt <mbstring.h>
_mbsnccnt_l <mbstring.h>
_strncnt <tchar.h>
_wcsncnt <tchar.h>

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

Пример

// crt_mbsnbcnt.c

#include  <mbstring.h>
#include  <stdio.h>

int main( void )
{
   unsigned char str[] = "This is a multibyte-character string.";
   unsigned int char_count, byte_count;
   char_count = _mbsnccnt( str, 10 );
   byte_count = _mbsnbcnt( str, 10 );
   if ( byte_count - char_count )
      printf( "The first 10 characters contain %d multibyte characters\n", char_count );
   else
      printf( "The first 10 characters are single-byte.\n");
}

Выходные данные

The first 10 characters are single-byte.

См. также

Обработка строк
Локаль
Интерпретация последовательностей многобайтовых символов
_mbsnbcat, _mbsnbcat_l