Share via


_strncnt, _wcsncnt, _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l

傳回指定計次數內的字元或位元組數目。

重要

在 Windows 執行階段中執行的應用程式中無法使用 _mbsnbcnt_mbsnbcnt_l_mbsnccnt_mbsnccnt_l。 如需詳細資訊,請參閱 CRT functions not supported in Universal Windows Platform apps (通用 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 完成之前遇到 Null 字元,則會傳回 Null 字元之前找到的位元組或字元數。 如果 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_l如果在 _mbsnccnt 雙位元組字元的第二個位元組中遇到 Null 字元,則第一個位元組也會被視為 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 n/a
_wcsncnt 不適用 不適用 _mbsnbcnt
_wcsncnt 不適用 不適用 _mbsnccnt
不適用 n/a _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