strcmp dan Perbandingan
Bandingkan string.
strcmp dan Perbandingan adalah pelajaran C Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C Academy mencakup 4 pelajaran total.
Membandingkan string
Anda tidak dapat membandingkan string dengan == dalam C. Operator itu hanya membandingkan alamat dua array, bukan isinya.
Gunakan strcmp(a, b) dari <string.h> untuk membandingkan karakter demi karakter.
#include <stdio.h>
#include <string.h>
int main(void) {
char a[] = "apple";
char b[] = "apple";
if (strcmp(a, b) == 0)
printf("Strings are equal\n");
return 0;
}Nilai yang dikembalikan strcmp
strcmp mengembalikan sebuah int:
- 0 jika string sama
- nilai negatif jika char pertama yang berbeda dalam
alebih kecil daripada dalamb - nilai positif jika tidak demikian
#include <stdio.h>
#include <string.h>
int main(void) {
printf("%d\n", strcmp("abc", "abc"));
printf("%d\n", strcmp("abc", "abd"));
printf("%d\n", strcmp("abd", "abc"));
return 0;
}Jebakan nol berarti sama
Kesalahan umum: menulis if (strcmp(a, b)) dengan mengira artinya sama.
Ingat bahwa strcmp mengembalikan 0 (falsy) ketika string sama, sehingga kondisi tersebut bernilai benar ketika keduanya berbeda. Selalu bandingkan dengan 0 secara eksplisit.
#include <stdio.h>
#include <string.h>
int main(void) {
char input[] = "yes";
if (strcmp(input, "yes") == 0)
printf("Confirmed\n");
else
printf("Not confirmed\n");
return 0;
}Cara kerja perbandingan
strcmp membandingkan nilai ASCII (byte) karakter satu per satu sampai ditemukan perbedaan atau terminator tercapai.
Huruf kapital (A=65) berada sebelum huruf kecil (a=97), sehingga "Zebra" diurutkan sebelum "apple".
#include <stdio.h>
#include <string.h>
int main(void) {
printf("%d\n", strcmp("Zebra", "apple"));
return 0;
}Pengurutan leksikografis
Tanda hasil strcmp memungkinkan Anda mengurutkan string berdasarkan abjad. Hasil negatif berarti argumen pertama muncul lebih awal dalam urutan kamus.
#include <stdio.h>
#include <string.h>
int main(void) {
const char *x = "banana";
const char *y = "cherry";
if (strcmp(x, y) < 0)
printf("%s comes before %s\n", x, y);
return 0;
}strncmp: perbandingan terbatas
strncmp(a, b, n) membandingkan paling banyak n karakter. Ini berguna untuk memeriksa awalan.
Contohnya, untuk menguji apakah sebuah string diawali "http".
#include <stdio.h>
#include <string.h>
int main(void) {
char url[] = "https://site.com";
if (strncmp(url, "https", 5) == 0)
printf("Secure URL\n");
return 0;
}Perbandingan tanpa membedakan huruf besar-kecil
strcmp standar membedakan huruf besar-kecil. Untuk mengabaikan perbedaan tersebut, Anda dapat mengonversi karakter dengan tolower dari <ctype.h> saat membandingkan.
(Sistem POSIX juga menyediakan strcasecmp, tetapi fungsi itu tidak termasuk dalam standar C.)
#include <stdio.h>
#include <ctype.h>
int ci_cmp(const char *a, const char *b) {
while (*a && (tolower(*a) == tolower(*b))) { a++; b++; }
return tolower(*a) - tolower(*b);
}
int main(void) {
printf("%d\n", ci_cmp("Hello", "hello"));
return 0;
}Mencari dengan perbandingan
Anda dapat mengulang array string dan menggunakan strcmp untuk menemukan kecocokan, seperti pada tabel pencarian sederhana.
#include <stdio.h>
#include <string.h>
int main(void) {
const char *fruits[] = {"apple", "banana", "cherry"};
const char *target = "banana";
for (int i = 0; i < 3; i++) {
if (strcmp(fruits[i], target) == 0) {
printf("Found at index %d\n", i);
}
}
return 0;
}Mengurutkan string
Dengan menggunakan strcmp sebagai mesin pengurut, Anda dapat mengurutkan array string. Berikut pengurutan gelembung sederhana yang menukar penunjuk berdasarkan urutan.
#include <stdio.h>
#include <string.h>
int main(void) {
const char *names[] = {"Carol", "Alice", "Bob"};
int n = 3;
for (int i = 0; i < n - 1; i++)
for (int j = 0; j < n - 1 - i; j++)
if (strcmp(names[j], names[j+1]) > 0) {
const char *t = names[j];
names[j] = names[j+1];
names[j+1] = t;
}
for (int i = 0; i < n; i++) printf("%s\n", names[i]);
return 0;
}Jangan membandingkan langsung dengan pengurangan
Anda mungkin mencoba menulis perbandingan sendiri dengan a[i] - b[i], tetapi pada nilai char mentah, perilaku tandanya ditentukan oleh implementasi dan dapat menyebabkan luapan.
Utamakan pustaka strcmp, yang menangani kasus khusus tersebut dengan benar.
#include <stdio.h>
#include <string.h>
int main(void) {
int r = strcmp("file1", "file2");
printf("Result sign: %s\n", r < 0 ? "negative" : "non-negative");
return 0;
}Membandingkan masukan pengguna
Salah satu penggunaan nyata adalah memeriksa kata sandi atau pilihan menu. Baca masukan, lalu bandingkan dengan nilai yang diharapkan menggunakan strcmp.
Selalu bandingkan dengan 0 untuk menguji kesamaan.
#include <stdio.h>
#include <string.h>
int main(void) {
char choice[] = "quit";
if (strcmp(choice, "quit") == 0)
printf("Exiting program\n");
return 0;
}Pemeriksaan singkat
Uji pemahaman Anda tentang nilai kembalian strcmp.
Rangkuman
Anda telah mempelajari cara membandingkan string dalam C:
- strcmp mengembalikan 0 jika sama, serta nilai negatif atau positif untuk menunjukkan urutan.
- Jangan pernah menggunakan
==pada string; operator itu membandingkan alamat. - Selalu uji
== 0untuk memeriksa kesamaan (jebakan nol berarti falsy). - strncmp membandingkan awalan; perbandingan tanpa membedakan huruf besar-kecil memerlukan
tolower.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “strcmp dan Perbandingan” gratis?
Ya — teks lengkap “strcmp dan Perbandingan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C Academy, upgrade ke CoddyKit PRO. Kursus C Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “strcmp dan Perbandingan”?
Bandingkan string. Kamu berlatih C Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C Academy?
Tidak diperlukan pengalaman sebelumnya. C Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “strcmp dan Perbandingan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C Academy ini?
Ya. Setiap pelajaran C Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- strlen, strcpy, strcat
- strcmp dan Perbandingan
- strtok dan Tokenisasi
- memcpy dan memset