strcmp,wcscmp _mbscmp
比較字串。
重要
_mbscmp 不能用於 Windows 執行階段執行的應用程式。如需詳細資訊,請參閱 CRT 函式不支援使用 /ZW。
int strcmp(
const char *string1,
const char *string2
);
int wcscmp(
const wchar_t *string1,
const wchar_t *string2
);
int _mbscmp(
const unsigned char *string1,
const unsigned char *string2
);
參數
- string1, string2
要比較的 NULL 結尾字串。
傳回值
這些函式的每一個傳回值表示 string1 的字典與 string2。
值 |
string1 string2 關聯性 |
---|---|
< 0 |
string1 小於 string2。 |
0 |
string1 與 string2相同 |
> 0 |
string1 大於 string2 |
在錯誤, _mbscmp 會傳回 _NLSCMPERROR,在 STRING.H 和 MBSTRING.H. 定義。
備註
strcmp 函式的標準方式比較 string1 和 string2 並傳回其關聯性的值。 wcscmp 和 _mbscmp 分別為,則為 strcmp,寬字元和多位元組字元版本。 _mbscmp 表示根據目前的多位元組字碼頁辨識多位元組字元序列並傳回錯誤的 _NLSCMPERROR 。 如需詳細資訊,請參閱字碼頁。 此外,否則,如果 string1 或 string2 為 null 指標, _mbscmp 叫用無效的參數處理常式,如 參數驗證中所述。 如果執行允許繼續, _mbscmp 會傳回 _NLSCMPERROR 和 errno 設為 EINVAL。 strcmp 和 wcscmp 並不驗證它們的參數。 這三個函式其餘部分的運作相同。
泛用文字常式對應
TCHAR.H 常式 |
未定義 _UNICODE & _MBCS |
已定義 _MBCS |
已定義 _UNICODE |
---|---|---|---|
_tcscmp |
strcmp |
_mbscmp |
wcscmp |
strcmp 函式與函式不同 strcollstrcmp 比較不受地區設定的,則為 strcoll ,而比較方式取決於目前地區設定的 LC_COLLATE 類別。 如需 LC_COLLATE 分類的詳細資訊,請參閱 setlocale _wsetlocale。
在「C」地區設定,字元順序字元集 (ASCII 字元集) 的相同字典會。 然而,在其他地區設定中,字元順序字元集的可能與傳統詞已纂順序不同。 例如,在某些歐洲地區設定中,字元「a」(值 0x61) 以字元「ä」(值 0xE4) 在字元集,不過,字元「ä 之前」字一般地在字元「a」之前。
在字元集和字典會不同地區設定,請使用 strcoll 而非 strcmp 做為字串字典會根據目前地區設定的 LC_COLLATE 分類設定。 若要執行地區設定的字典比較在上述範例中,請使用 strcoll 而非 strcmp。 或者,您可以在原始字串的 strxfrm ,然後在結果字串的 strcmp 。
_stricmp、 _wcsicmp和 _mbsicmp 比對字串會先轉換成其小寫形式。 包含兩個字元位於「Z」和「a」之間不同 ASCII 資料表的字串 (「[」,則為 '\', 「]」, '^'、 '_'和 '`') 比較,根據的條件。 例如,兩個字串 "ABCDE" 和 "ABCD^" 比較的一種方法,當比較是小寫 > "abcd^"("abcde" ) 和另一個"ABCDE" < ( "ABCD^"),則比較大小寫。
需求
程序 |
必要的標頭檔 |
---|---|
strcmp |
<string.h> |
wcscmp |
<string.h> 或 <wchar.h> |
_mbscmp |
<mbstring.h> |
如需其他相容性資訊,請參閱 相容性。
程式庫
所有的 C 執行階段程式庫 (C run-time libraries) 版本。
範例
// crt_strcmp.c
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown dog jumps over the lazy fox";
int main( void )
{
char tmp[20];
int result;
// Case sensitive
printf( "Compare strings:\n %s\n %s\n\n", string1, string2 );
result = strcmp( string1, string2 );
if( result > 0 )
strcpy_s( tmp, _countof(tmp), "greater than" );
else if( result < 0 )
strcpy_s( tmp, _countof (tmp), "less than" );
else
strcpy_s( tmp, _countof (tmp), "equal to" );
printf( " strcmp: String 1 is %s string 2\n", tmp );
// Case insensitive (could use equivalent _stricmp)
result = _stricmp( string1, string2 );
if( result > 0 )
strcpy_s( tmp, _countof (tmp), "greater than" );
else if( result < 0 )
strcpy_s( tmp, _countof (tmp), "less than" );
else
strcpy_s( tmp, _countof (tmp), "equal to" );
printf( " _stricmp: String 1 is %s string 2\n", tmp );
}
.NET Framework 對等用法
System::String::CompareOrdinal
請參閱
參考
_stricmp、 _wcsicmp、 _mbsicmp、 _stricmp_l、 _wcsicmp_l、 _mbsicmp_l
strncmp、 wcsncmp、 _mbsncmp、 _mbsncmp_l
_strnicmp、 _wcsnicmp、 _mbsnicmp、 _strnicmp_l、 _wcsnicmp_l、 _mbsnicmp_l
strrchr、 wcsrchr、 _mbsrchr、 _mbsrchr_l