_mbsnbcnt, _mbsnccnt, _strncnt, _wcsncnt
Return number of characters or bytes within a supplied count
size_t_mbsnbcnt(constunsignedchar*string,size_tnumber );
size_t_mbsnccnt(constunsignedchar*string,size_tnumber );
Routine | Required Header | Compatibility |
_mbsnbcnt | <mbstring.h> | Win 95, Win NT |
_mbsnccnt | <mbstring.h> | Win 95, Win NT |
_strncnt | <tchar.h> | Win 95, Win NT |
_wcsncnt | <tchar.h> | Win 95, Win NT |
For additional compatibility information, see Compatibility in the Introduction.
Libraries
LIBC.LIB | Single thread static library, retail version |
LIBCMT.LIB | Multithread static library, retail version |
MSVCRT.LIB | Import library for MSVCRT.DLL, retail version |
Return Value
_mbsnbcnt returns the number of bytes found in the first number of multibyte characters of string. _mbsnccnt returns the number of characters found in the first number of bytes of string. If a NULL character is encountered before the examination of string has completed, they return the number of bytes or characters found before the NULL character. If string consists of fewer than number characters or bytes, they return the number of characters or bytes in the string. If number is less than zero, they return 0. In previous versions, these functions had a return value of type int rather than size_t.
_strncnt returns the number of characters in the first number bytes of the single-byte string string. _wcsncnt returns the number of bytes in the first number wide characters of the wide-character string string.
Parameters
string
String to be examined
number
Number of characters or bytes to be examined in string
Remarks
_mbsnbcnt counts the number of bytes found in the first number of multibyte characters of string. _mbsnbcnt replaces mtob, and should be used in place of mtob.
_mbsnccnt counts the number of characters found in the first number of bytes of string. If _mbsnccnt encounters a NULL in the second byte of a double-byte character, the first byte is also considered to be NULL and is not included in the returned count value. _mbsnccnt replaces btom, and should be used in place of btom.
If _MBCS is defined, _mbsnbcnt is mapped to _tcsnbcnt and _mbsnbcnt is mapped to _tcsnccnt. These two mapping routines provide generic-text support and are defined in TCHAR.H. If _UNICODE is defined, both _mbsnbcnt and _mbsnccnt are mapped to the _wcsncnt macro. When _MBCS and _UNICODE are not defined, both _tcsnbcnt and _tcsnccnt are mapped to the _strncnt macro. _strncnt is the single-byte–character string version and _wcsncnt is the wide-character–string version of these mapping routines. _strncnt and _wcsncnt are provided only for generic-text mapping and should not be used otherwise. For more information, see Using Generic-Text Mappings and see Appendix B, Generic-Text Mappings.
Example
/* MBSNBCNT.C */
#include <mbstring.h>
#include <stdio.h>
void 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 %s multibyte characters", char_count );
else
printf( "The first 10 characters are single-byte.");
}
Output
The first 10 characters are single-byte.
See Also _mbsnbcat