strcmp
, , wcscmp
_mbscmp
,_mbscmp_l
Membandingkan string.
Penting
_mbscmp
dan _mbscmp_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 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
);
Parameter
string1
, string2
String yang dihentikan null untuk dibandingkan.
locale
Lokal untuk digunakan.
Nilai hasil
Nilai pengembalian untuk masing-masing fungsi ini menunjukkan hubungan ordinal ke string1
string2
.
Nilai | Hubungan ke string1 string2 |
---|---|
< 0 | string1 kurang dari string2 |
0 | string1 identik dengan string2 |
> 0 | string1 lebih besar dari string2 |
Pada kesalahan validasi parameter, _mbscmp
dan kembalikan _NLSCMPERROR
, yang didefinisikan dalam <string.h>
dan <mbstring.h>
_mbscmp_l
.
Keterangan
Fungsi melakukan strcmp
perbandingan string1
ordinal dan string2
dan mengembalikan nilai yang menunjukkan hubungannya. wcscmp
dan _mbscmp
masing-masing, versi karakter lebar dan multibyte-character dari strcmp
. _mbscmp
mengenali urutan karakter multibyte sesuai dengan halaman kode multibyte saat ini dan mengembalikan _NLSCMPERROR
kesalahan. _mbscmp_l
memiliki perilaku yang sama, tetapi menggunakan parameter lokal yang diteruskan alih-alih lokal saat ini. Untuk informasi selengkapnya, lihat Halaman kode. Selain itu, jika string1
atau string2
adalah penunjuk null, _mbscmp
memanggil handler parameter yang tidak valid, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, _mbscmp
dan _mbscmp_l
mengembalikan _NLSCMPERROR
dan mengatur errno
ke EINVAL
. strcmp
dan wcscmp
tidak memvalidasi parameternya. Fungsi-fungsi ini berulah secara identik jika tidak.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Pemetaan rutin teks generik
TCHAR.H Rutin |
_UNICODE dan _MBCS tidak ditentukan |
_MBCS Didefinisikan |
_UNICODE Didefinisikan |
---|---|---|---|
_tcscmp |
strcmp |
_mbscmp |
wcscmp |
Fungsi strcmp
berbeda dari strcoll
fungsi dalam perbandingan tersebut strcmp
bersifat ordinal, dan tidak terpengaruh oleh lokal. strcoll
membandingkan string secara leksikografis dengan menggunakan LC_COLLATE
kategori lokal saat ini. Untuk informasi selengkapnya tentang LC_COLLATE
kategori, lihat setlocale
, _wsetlocale
.
Dalam lokal "C", urutan karakter dalam set karakter (set karakter ASCII) sama dengan urutan karakter leksikografis. Namun, di lokal lain, urutan karakter dalam set karakter mungkin berbeda dari urutan leksikografis. Misalnya, dalam lokal Eropa tertentu, karakter 'a
' (nilai 0x61) hadir sebelum karakter 'ä
' (nilai 0xE4) dalam set karakter, tetapi karakter 'ä
' hadir di depan karakter 'a
' secara leksikografis.
Di lokal yang set karakternya dan urutan karakter leksikografisnya berbeda, Anda dapat menggunakan strcoll
alih-alih untuk perbandingan strcmp
leksikografis string. Atau, Anda dapat menggunakan strxfrm
pada string asli, lalu menggunakan strcmp
pada string yang dihasilkan.
Fungsi ini strcmp
peka huruf besar/kecil. _stricmp
, _wcsicmp
, dan _mbsicmp
bandingkan string dengan terlebih dahulu mengonversinya ke bentuk huruf kecil. Dua string yang berisi karakter yang terletak antara 'Z' dan 'a' dalam tabel ASCII (''[
, '\\
', ']
', '^
', '_
', dan '`
') membandingkan secara berbeda, tergantung pada kasusnya. Misalnya, dua string "ABCDE
" dan "ABCD^
" membandingkan satu cara jika perbandingannya adalah huruf kecil ("abcde
" > "abcd^
") dan cara lain ("ABCDE
" < "ABCD
^") jika perbandingannya adalah huruf besar.
Persyaratan
Rutin | Header yang diperlukan |
---|---|
strcmp |
<string.h> |
wcscmp |
<string.h> atau <wchar.h> |
_mbscmp |
<mbstring.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Pustaka
Semua versi pustaka run-time C.
Contoh
// 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
Lihat juga
Manipulasi string
memcmp
, wmemcmp
_memicmp
, _memicmp_l
strcoll
Fungsi
_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