返回指定计数内的字符数或字节数。

重要

_mbsnbcnt_mbsnbcnt_l_mbsnccnt_mbsnccnt_l 无法用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 Windows 平台应用中不支持的 CRT 函数

语法

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 返回在 str 的前 count 个多字节字符中找到的字节数。 _mbsnccnt_mbsnccnt_l 返回在 str 的前 count 个字节中找到的字符数。 如果在完成 str 的检查之前遇到空字符,则它们返回在此空字符之前找到的字节数或字符数。 如果 str 包含的字符或字节少于 count 个,则它们返回字符串中的字符数或字节数。 如果 count 小于零,则它们返回 0。 在以前的版本中,这些函数的返回值类型为 int,而不是 size_t

_strncnt 返回单字节字符串 str 的前 count 个字节中的字符数。 _wcsncnt 返回宽字符字符串 str 的前 count 个宽字符中的字符数。

备注

_mbsnbcnt_mbsnbcnt_l 计数在 str 的前 count 个多字节字符中找到的字节数。 _mbsnbcnt_mbsnbcnt_l 替换 mtob,而且应该用于代替 mtob

_mbsnccnt_mbsnccnt_l 计数在 str 的前 count 个字节中找到的字符数。 如果 _mbsnccnt_mbsnccnt_l 在双字节字符的第二个字节中遇到空字符,则第一个字节也被视为 null,并且不包括在返回的计数值中。 _mbsnccnt_mbsnccnt_l 替换 btom,而且应该用于代替 btom

如果 strNULL 指针,或者 count 是 0,则这些函数调用无效的参数处理程序,如参数验证中所述,errno 设置为 EINVAL,且函数返回 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.

另请参阅

字符串操作
区域设置
多字节字符序列的解释
%>