_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
。
如果 str
是NULL
指標或為 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 |
n/a | n/a | _mbsnbcnt |
_wcsncnt |
n/a | n/a | _mbsnccnt |
n/a | 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.