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 string1string2.

Nilai Hubungan ke string1string2
< 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

Baca 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