_stricmp
, _wcsicmp
, _mbsicmp
, , _stricmp_l
, _wcsicmp_l
, _mbsicmp_l
Dizelerin büyük/küçük harfe duyarlı olmayan bir karşılaştırmasını gerçekleştirir.
Önemli
_mbsicmp
ve _mbsicmp_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 _stricmp(
const char *string1,
const char *string2
);
int _wcsicmp(
const wchar_t *string1,
const wchar_t *string2
);
int _mbsicmp(
const unsigned char *string1,
const unsigned char *string2
);
int _stricmp_l(
const char *string1,
const char *string2,
_locale_t locale
);
int _wcsicmp_l(
const wchar_t *string1,
const wchar_t *string2,
_locale_t locale
);
int _mbsicmp_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
Dönüş değeri, öğesinin ilişkisini string1
string2
aşağıdaki gibi gösterir.
Dönüş değeri | Açıklama |
---|---|
< 0 | string1 küçüktür string2 |
0 | string1 özdeş string2 |
> 0 | string1 büyüktür string2 |
Bir hatada, _mbsicmp
ve <mbstring.h>
içinde <string.h>
tanımlanan değerini döndürür_NLSCMPERROR
.
Açıklamalar
İşlev, _stricmp
her karakteri küçük harfe dönüştürdükten sonra ve değerlerini karşılaştırır string1
string2
ve ilişkilerini gösteren bir değer döndürür. _stricmp
karşılaştırmanın _stricmp
yalnızca tarafından etkilendiğinden _stricoll
LC_CTYPE
farklıdır ve hangi karakterlerin büyük ve küçük harf olduğunu belirler. _stricoll
işlevi, dizeleri hem büyük/küçük harf hem de harmanlama sırasını içeren yerel ayarın hem LC_CTYPE
LC_COLLATE
hem de kategorilerine göre karşılaştırır. Kategori hakkında LC_COLLATE
daha fazla bilgi için bkz setlocale
. ve Yerel Ayar kategorileri. Bu işlevlerin son eki olmayan _l
sürümleri, yerel ayara bağımlı davranış için geçerli yerel ayarı kullanır. Son eki olan sürümler, bunun yerine geçirilen yerel ayarı kullanmaları dışında aynıdır. Yerel ayar ayarlanmamışsa, C yerel ayarı kullanılır. Daha fazla bilgi için bkz . Yerel Ayar.
Not
_stricmp
eşdeğeri, _strcmpi
olur. Bunlar birbirinin yerine kullanılabilir ancak _stricmp
tercih edilen standarttır.
_strcmpi
işlevi ile eşdeğerdir _stricmp
ve yalnızca geriye dönük uyumluluk için sağlanır.
Küçük _stricmp
harf karşılaştırmaları yaptığı için beklenmeyen davranışlara neden olabilir.
tarafından yapılan büyük/küçük harf dönüştürme _stricmp
işleminin karşılaştırmanın sonucunu ne zaman etkilediğini göstermek için ve iki dizeye JOHNSTON
JOHN_HENRY
sahip olduğunuzu varsayalım. "_
" küçük harf S değerinden daha düşük bir ASCII değerine sahip olduğundan dize JOHN_HENRY
küçük olarak kabul JOHNSTON
edilir. Aslında, 91 ile 96 arasında ASCII değeri olan herhangi bir karakter herhangi bir harften daha az kabul edilir.
strcmp
işlevi yerine kullanılırsa, JOHN_HENRY
değerinden _stricmp
JOHNSTON
büyük olur.
_wcsicmp
ve _mbsicmp
geniş karakterli ve çok baytlı sürümleridir _stricmp
. bağımsız değişkenleri ve dönüş değeri _wcsicmp
geniş karakterli dizelerdir. bağımsız değişkenleri ve dönüş değeri _mbsicmp
çok baytlı karakter dizeleridir. _mbsicmp
geçerli çok baytlı kod sayfasına göre çok baytlı karakter dizilerini tanır ve bir hata döndürür _NLSCMPERROR
. Daha fazla bilgi için bkz . Kod sayfaları. Bu üç işlev aynı şekilde davranır.
_wcsicmp
ve wcscmp
aynı şekilde davranır, ancak bu wcscmp
, bağımsız değişkenlerini karşılaştırmadan önce küçük harfe dönüştürmez. _mbsicmp
ve _mbscmp
aynı şekilde davranır, ancak bu _mbscmp
, bağımsız değişkenlerini karşılaştırmadan önce küçük harfe dönüştürmez.
Latince 1 karakterle çalışmak için _wcsicmp
çağrısı setlocale
yapmanız gerekir. C yerel ayarı varsayılan olarak etkindir, bu nedenle örneğin ä, ğile eşit değildir. çağrısından setlocale
önce C yerel ayarı dışındaki herhangi bir yerel ayarla çağrısında bulunma _wcsicmp
. Aşağıdaki örnek, yerel ayara nasıl _wcsicmp
duyarlı olduğunu gösterir:
// crt_stricmp_locale.c
By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md).
#include <string.h>
#include <stdio.h>
#include <locale.h>
int main() {
setlocale(LC_ALL,"C"); // in effect by default
printf("\n%d",_wcsicmp(L"ä", L"Ä")); // compare fails
setlocale(LC_ALL,"");
printf("\n%d",_wcsicmp(L"ä", L"Ä")); // compare succeeds
}
Bunun alternatifi, _wcreate_locale
çağrısı _create_locale
yapmak ve döndürülen yerel ayar nesnesini parametresi olarak 'a geçirmektir_wcsicmp_l
.
Bu işlevlerin tümü parametrelerini doğrular. string1
veya string2
null işaretçiler ise, parametre doğrulaması bölümünde açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, bu işlevler döndürülerek _NLSCMPERROR
olarak EINVAL
ayarlanırerrno
.
Genel metin yordamı eşlemeleri
TCHAR.H olağan |
_UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_tcsicmp |
_stricmp |
_mbsicmp |
_wcsicmp |
Gereksinimler
Yordam | Gerekli başlık |
---|---|
_stricmp , _stricmp_l |
<string.h> |
_wcsicmp , _wcsicmp_l |
<string.h> veya <wchar.h> |
_mbsicmp , _mbsicmp_l |
<mbstring.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// crt_stricmp.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
strcmp
, wcscmp
, _mbscmp
strcoll
işlevleri
strncmp
, wcsncmp
, _mbsncmp
, _mbsncmp_l
_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