strcmp
, wcscmp
, _mbscmp
, _mbscmp_l
Dizeleri karşılaştırın.
Önemli
_mbscmp
ve _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 string1
string2
gö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 string1
string2
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 EINVAL
ayarlayı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 olağan |
_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
, _wcsicmp
ve _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 "ABCDE
ABCD^
" 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