strncmp、 wcsncmp、 _mbsncmp、 _mbsncmp_l
使用目前的地區設定或指定的地區設定,比較兩個字串字元。
重要事項 |
---|
_mbsncmp 和 _mbsncmp_l 不能用於 Windows 執行階段執行的應用程式。如需詳細資訊,請參閱 CRT 函式不支援使用 /ZW。 |
int strncmp(
const char *string1,
const char *string2,
size_t count
);
int wcsncmp(
const wchar_t *string1,
const wchar_t *string2,
size_t count
);
int _mbsncmp(
const unsigned char *string1,
const unsigned char *string2,
size_t count
);
int _mbsncmp_l(
const unsigned char *string1,
const unsigned char *string2,
size_t count,
_locale_t locale
);int _mbsnbcmp(
const unsigned char *string1,
const unsigned char *string2,
size_t count
);
參數
string1, string2
要比較的字串。count
要比較的字元數。locale
使用的地區設定。
傳回值
傳回值如下表示 string1 和 string2 的子關聯。
傳回值 |
描述 |
---|---|
< 0 |
string1 的子字串小於 string2 子字串 |
0 |
string1 中子字串與 string2 子字串 |
> 0 |
string1 的子字串大於 string2 子字串 |
在錯誤, _mbsncmp會傳回 _NLSCMPERROR,在 STRING.H 和 MBSTRING.H. 定義。
備註
字典 strncmp 函式比較,最多,在 string1 和 string2 的第一個 count 字元並傳回表示子字串的值之間的關聯性。strncmp 是 _strnicmp的區分大小寫的版本。wcsncmp 和 _mbsncmp 都是 _wcsnicmp 和 _mbsnicmp區分大小寫的版本。
wcsncmp 和 _mbsncmp 是 strncmp 的寬字元和多位元組字元版本。wcsncmp 的參數和回傳值是寬字元字串,而 _mbsncmp 則是多位元組字元字串。_mbsncmp 表示根據多位元組字碼頁辨識多位元組字元序列並傳回錯誤的 _NLSCMPERROR 。
此外, _mbsncmp 驗證其參數。如果 string1 或 string2 為 null 指標,無效的參數叫用處理常式,如 參數驗證 中所述。如果執行允許繼續, _mbsncmp 會傳回 _NLSCMPERROR 和 errno 設為 EINVAL。strncmp 和 wcsncmp 並不驗證它們的參數。這三個函式其餘部分的運作相同。
輸出值受地區設定的LC_CTYPE 分類設定所影響。如需詳細資訊,請參閱 setlocale 。這些函式沒有以 _l 後綴的版本在這些地區相依的行為上使用目前的地區設定,而以 _l 後綴版本除了它們會使用傳入的地區設定參數之外運作相同。如需詳細資訊,請參閱地區設定。
泛用文字常式對應
TCHAR.H 常式 |
未定義 _UNICODE & _MBCS |
已定義 _MBCS |
已定義 _UNICODE |
---|---|---|---|
_tcsnccmp |
strncmp |
_mbsncmp |
wcsncmp |
_tcsncmp |
strncmp |
_mbsnbcmp |
wcsncmp |
_tccmp |
對巨集或內嵌函式的對應 |
_mbsncmp |
對巨集或內嵌函式的對應 |
N/A |
N/A |
_mbsncmp_l |
N/A |
需求
程序 |
必要的標頭檔 |
---|---|
strncmp |
<string.h> |
wcsncmp |
<string.h> 或 <wchar.h> |
_mbsncmp, _mbsncmp_l |
<mbstring.h> |
如需其他相容性資訊,請參閱入門介紹中的 相容性 (Compatibility) 。
範例
// crt_strncmp.c
#include <string.h>
#include <stdio.h>
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown fox jumps over the lazy dog";
int main( void )
{
char tmp[20];
int result;
printf( "Compare strings:\n %s\n %s\n\n",
string1, string2 );
printf( "Function: strncmp (first 10 characters only)\n" );
result = strncmp( string1, string2 , 10 );
if( result > 0 )
strcpy_s( tmp, sizeof(tmp), "greater than" );
else if( result < 0 )
strcpy_s( tmp, sizeof(tmp), "less than" );
else
strcpy_s( tmp, sizeof(tmp), "equal to" );
printf( "Result: String 1 is %s string 2\n\n", tmp );
printf( "Function: strnicmp _strnicmp (first 10 characters only)\n" );
result = _strnicmp( string1, string2, 10 );
if( result > 0 )
strcpy_s( tmp, sizeof(tmp), "greater than" );
else if( result < 0 )
strcpy_s( tmp, sizeof(tmp), "less than" );
else
strcpy_s( tmp, sizeof(tmp), "equal to" );
printf( "Result: String 1 is %s string 2\n", tmp );
}
.NET Framework 對等用法
請參閱
參考
_strnicmp、 _wcsnicmp、 _mbsnicmp、 _strnicmp_l、 _wcsnicmp_l、 _mbsnicmp_l
strrchr、 wcsrchr、 _mbsrchr、 _mbsrchr_l