_strncnt、_wcsncnt、_mbsnbcnt、_mbsnbcnt_l、_mbsnccnt、_mbsnccnt_l
傳回字元或位元組數目在指定的計數中。
重要
_mbsnbcnt、_mbsnbcnt_l、_mbsnccnt和_mbsnccnt_l不能用於 Windows 執行階段執行的應用程式。如需詳細資訊,請參閱 /ZW 不支援 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 和 _mbsnccnt_l 以雙位元組字元的第二個位元組遇到 NULL,第一個位元組也視為 NULL 且不包含在傳回的值。 _mbsnccnt 和 _mbsnccnt_l 取代 btom ,且應在 btom位置使用。
如果 str 為 null 指標或為 count 為 0,這些函式會叫用無效的參數處理常式如 參數驗證中所述, errno 會設定為 EINVAL且函式會傳回 0。
輸出值受地區設定的LC_CTYPE 分類設定所影響。如需詳細資訊,請參閱 setlocale 。 這些函式沒有以 _l 後綴的版本在這些地區相依的行為上使用目前的地區設定,而以 _l 後綴版本除了它們會使用傳入的地區設定參數之外運作相同。 如需詳細資訊,請參閱地區設定。
一般文字常式對應
常式 |
未定義 _UNICODE and _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");
}
Output
The first 10 characters are single-byte.
.NET Framework 對等用法
不適用。若要呼叫標準 C 函式,請使用 PInvoke。如需詳細資訊,請參閱平台叫用範例。