Share via


strcmp, wcscmp, _mbscmp, _mbscmp_l

Dizeleri karşılaştırın.

Önemli

_mbscmpve _mbscmp_l Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz. Daha fazla bilgi için bkz. Evrensel Windows Platformu uygulamalarında desteklenmeyen CRT işlevleri.

Sözdizimi

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
);
int _mbscmp_l(
   const unsigned char *string1,
   const unsigned char *string2,
   _locale_t locale
);

Parametreler

string1, string2
Karşılaştırmak için null olarak sonlandırılan dizeler.

locale
Kullanılacak yerel ayar.

Dönüş değeri

Bu işlevlerin her biri için dönüş değeri ile sıralı ilişkisini string1string2gösterir.

Değer string1 ile ilişkisistring2
< 0 string1 küçüktür string2
0 string1 ile aynıdır string2
> 0 string1 büyüktür string2

Parametre doğrulama hatasında _mbscmp ve _mbscmp_l içinde <string.h><mbstring.h>tanımlanan değerini döndür._NLSCMPERROR

Açıklamalar

İşlev, strcmp ve'nin string2 sıralı karşılaştırmasını string1 gerçekleştirir ve ilişkilerini gösteren bir değer döndürür. wcscmp ve _mbscmp sırasıyla geniş karakterli ve çok baytlı sürümleridir strcmp. _mbscmp geçerli çok baytlı kod sayfasına göre çok baytlı karakter dizilerini tanır ve bir hata döndürür _NLSCMPERROR . _mbscmp_l aynı davranışa sahiptir, ancak geçerli yerel ayar yerine geçirilen yerel ayar parametresini kullanır. Daha fazla bilgi için bkz . Kod sayfaları. Ayrıca, veya string1string2 bir null işaretçiyse, _mbscmp Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisini çağırır. Yürütmenin devam etmesi için izin verilirse, _mbscmp_mbscmp_l döndürerek _NLSCMPERROR olarak EINVALayarlayınerrno. strcmp ve wcscmp parametrelerini doğrulamaz. Bu işlevler aynı şekilde davranır.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Genel metin yordamı eşlemeleri

TCHAR.H Rutin _UNICODE ve _MBCS tanımlanmadı _MBCS Tanımlanan _UNICODE Tanımlanan
_tcscmp strcmp _mbscmp wcscmp

İşlevlerstrcmp, karşılaştırmaların sıralı olması strcmp ve yerel ayardan etkilenmemesi bakımından işlevlerden strcoll farklıdır. strcoll geçerli yerel ayarın kategorisini LC_COLLATE kullanarak dizeleri sözcük temelli olarak karşılaştırır. Kategori hakkında LC_COLLATE daha fazla bilgi için bkz setlocale. , _wsetlocale.

"C" yerel ayarında, karakter kümesindeki karakterlerin sırası (ASCII karakter kümesi) sözcüksel karakter sırası ile aynıdır. Ancak, diğer yerel ayarlarda karakter kümesindeki karakterlerin sırası sözcük düzeninden farklı olabilir. Örneğin, bazı Avrupa yerel ayarlarda 'a' karakteri (değer 0x61) karakter kümesindeki 'ä' karakterinden (değer 0xE4) önce gelir, ancak 'ä' karakteri sözcüksel olarak 'a' karakterinin önüne gelir.

Karakter kümesinin ve sözcüksel karakter sırasının farklı olduğu yerel ayarlarda, dizelerin sözcüksel karşılaştırması için yerine strcmp kullanabilirsinizstrcoll. Alternatif olarak, özgün dizelerde kullanabilir strxfrm ve ardından sonuçta elde edilen dizelerde kullanabilirsiniz strcmp .

strcmp İşlevler büyük/küçük harfe duyarlıdır. _stricmp, _wcsicmpve _mbsicmp dizelerini önce küçük harfli formlarına dönüştürerek karşılaştırın. ASCII tablosundaki ('[', '', '', '', '', '\\', '^_' ve '') tablosundaki ']Z' ile '`a' arasında bulunan karakterleri içeren iki dize, durumlarına bağlı olarak farklı şekilde karşılaştırılır. Örneğin, "" ve "ABCDEABCD^" iki dizesi, karşılaştırma küçük ("abcde" > "abcd^") ise bir şekilde karşılaştırılır ve karşılaştırma büyük harfse diğer yol ("ABCDE" < "ABCD^") olur.

Gereksinimler

Yordam Gerekli başlık
strcmp <string.h>
wcscmp <string.h> veya <wchar.h>
_mbscmp <mbstring.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Kitaplıklar

C çalışma zamanı kitaplıklarının tüm sürümleri.

Örnek

// 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 );
}
Compare strings:
   The quick brown dog jumps over the lazy fox
   The QUICK brown dog jumps over the lazy fox

   strcmp:   String 1 is greater than string 2
   _stricmp:  String 1 is equal to string 2

Ayrıca bkz.

Dize işleme
memcmp, wmemcmp
_memicmp, _memicmp_l
strcoll işlevleri
_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
strspn, wcsspn, _mbsspn, _mbsspn_l
strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l