Share via


_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

_mbsicmpve _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 string1string2 aşağıdaki gibi gösterir.

Dönüş değeri Tanım
< 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 string1string2 ve ilişkilerini gösteren bir değer döndürür. _stricmpkarşılaştırmanın _stricmp yalnızca tarafından etkilendiğinden _stricollLC_CTYPEfarklı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_CTYPELC_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.

Dekont

_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 JOHNSTONJOHN_HENRYsahip 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 _stricmpJOHNSTONbü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_localeyapmak 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 EINVALayarlanırerrno.

Genel metin yordamı eşlemeleri

TCHAR.H Rutin _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