_stricmp
, , _wcsicmp
_mbsicmp
, _stricmp_l
, , _wcsicmp_l
,_mbsicmp_l
Melakukan perbandingan string yang tidak peka huruf besar/kecil.
Penting
_mbsicmp
dan _mbsicmp_l
tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime. Untuk informasi selengkapnya, lihat Fungsi CRT yang tidak didukung di aplikasi Platform Windows Universal.
Sintaks
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
);
Parameter
string1
, string2
String yang dihentikan null untuk dibandingkan.
locale
Lokal untuk digunakan.
Nilai hasil
Nilai pengembalian menunjukkan hubungan string1
dengan string2
sebagai berikut.
Nilai hasil | Deskripsi |
---|---|
< 0 | string1 Kurang string2 |
0 | string1 identik dengan string2 |
> 0 | string1 lebih besar dari string2 |
Pada kesalahan, _mbsicmp
mengembalikan _NLSCMPERROR
, yang didefinisikan dalam <string.h>
dan <mbstring.h>
.
Keterangan
Fungsi membandingkan _stricmp
string1
dan string2
setelah mengonversi setiap karakter menjadi huruf kecil, dan mengembalikan nilai yang menunjukkan hubungannya. _stricmp
berbeda dari _stricoll
di mana perbandingan _stricmp
hanya dipengaruhi oleh LC_CTYPE
, yang menentukan karakter mana yang merupakan huruf besar dan kecil. Fungsi ini _stricoll
membandingkan string sesuai dengan LC_CTYPE
kategori dan LC_COLLATE
lokal, yang mencakup kasus dan urutan kolaborasi. Untuk informasi selengkapnya tentang LC_COLLATE
kategori, lihat setlocale
dan Kategori lokal. Versi fungsi-fungsi ini tanpa _l
akhiran menggunakan lokal saat ini untuk perilaku dependen lokal. Versi dengan akhiran identik kecuali mereka menggunakan lokal yang diteruskan sebagai gantinya. Jika lokal belum diatur, lokal C akan digunakan. Untuk informasi selengkapnya, lihat Lokal.
Catatan
_stricmp
setara dengan _strcmpi
. Mereka dapat digunakan secara bergantian tetapi _stricmp
merupakan standar yang disukai.
Fungsi _strcmpi
ini setara dengan _stricmp
dan disediakan hanya untuk kompatibilitas mundur.
Karena _stricmp
perbandingan huruf kecil dapat mengakibatkan perilaku yang tidak terduga.
Untuk mengilustrasikan kapan konversi kasus dengan _stricmp
memengaruhi hasil perbandingan, asumsikan JOHNSTON
bahwa Anda memiliki dua string dan JOHN_HENRY
. String JOHN_HENRY
akan dianggap kurang dari JOHNSTON
karena "_
" memiliki nilai ASCII yang lebih rendah daripada huruf kecil S. Bahkan, setiap karakter yang memiliki nilai ASCII antara 91 dan 96 akan dianggap kurang dari huruf apa pun.
strcmp
Jika fungsi digunakan alih-alih _stricmp
, JOHN_HENRY
akan lebih besar dari JOHNSTON
.
_wcsicmp
dan _mbsicmp
adalah versi karakter lebar dan multibyte-character dari _stricmp
. Argumen dan nilai yang dikembalikan adalah _wcsicmp
string karakter lebar. Argumen dan nilai yang dikembalikan adalah _mbsicmp
string multibyte-character. _mbsicmp
mengenali urutan karakter multibyte sesuai dengan halaman kode multibyte saat ini dan mengembalikan _NLSCMPERROR
kesalahan. Untuk informasi selengkapnya, lihat Halaman kode. Ketiga fungsi ini berulah secara identik jika tidak.
_wcsicmp
dan wcscmp
berperilaku identik kecuali yang wcscmp
tidak mengonversi argumennya menjadi huruf kecil sebelum membandingkannya. _mbsicmp
dan _mbscmp
berperilaku identik kecuali yang _mbscmp
tidak mengonversi argumennya menjadi huruf kecil sebelum membandingkannya.
Anda harus memanggil setlocale
_wcsicmp
untuk bekerja dengan karakter Latin 1. Lokal C berlaku secara default, jadi, misalnya, ä tidak akan dibandingkan dengan Ä. Hubungi setlocale
dengan lokal apa pun selain lokal C sebelum panggilan ke _wcsicmp
. Sampel berikut menunjukkan bagaimana _wcsicmp
sensitif terhadap lokal:
// 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
}
Alternatifnya adalah memanggil _create_locale
, _wcreate_locale
dan meneruskan objek lokal yang dikembalikan sebagai parameter ke _wcsicmp_l
.
Semua fungsi ini memvalidasi parameternya. Jika salah satu string1
atau string2
adalah penunjuk null, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter . Jika eksekusi diizinkan untuk melanjutkan, fungsi-fungsi ini kembali _NLSCMPERROR
dan diatur errno
ke EINVAL
.
Pemetaan rutin teks generik
TCHAR.H Rutin |
_UNICODE dan _MBCS tidak ditentukan |
_MBCS Didefinisikan |
_UNICODE Didefinisikan |
---|---|---|---|
_tcsicmp |
_stricmp |
_mbsicmp |
_wcsicmp |
Persyaratan
Rutin | Header yang diperlukan |
---|---|
_stricmp , _stricmp_l |
<string.h> |
_wcsicmp , _wcsicmp_l |
<string.h> atau <wchar.h> |
_mbsicmp , _mbsicmp_l |
<mbstring.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// 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
Lihat juga
Manipulasi string
memcmp
, wmemcmp
_memicmp
, _memicmp_l
strcmp
, , wcscmp
_mbscmp
strcoll
Fungsi
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