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 對等用法

System::String::Compare

請參閱

參考

字串操作 (CRT)

地區設定

多位元組字元序列的轉譯工作

_mbsnbcmp _mbsnbcmp_l

_mbsnbicmp _mbsnbicmp_l

strcmp,wcscmp _mbscmp

strcoll 函式

_strnicmp、 _wcsnicmp、 _mbsnicmp、 _strnicmp_l、 _wcsnicmp_l、 _mbsnicmp_l

strrchr、 wcsrchr、 _mbsrchr、 _mbsrchr_l

_strset、 _strset_l、 _wcsset、 _wcsset_l、 _mbsset、 _mbsset_l

strspn、 wcsspn、 _mbsspn、 _mbsspn_l