Menggunakan strcmp()
Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 18 dari 63.
Kamu telah mempelajari cara menggabungkan string dengan strcat(), tetapi bagaimana jika kamu perlu menentukan apakah dua string berisi teks yang persis sama? Dalam C, kamu tidak dapat menggunakan operator kesetaraan (==) untuk membandingkan string karena operator itu hanya membandingkan alamat memori, bukan isi sebenarnya.
Fungsi strcmp() dari library <string.h> menyelesaikan masalah ini dengan membandingkan dua string karakter demi karakter. Fungsi ini melakukan apa yang disebut perbandingan leksikografis, yaitu membandingkan string berdasarkan urutan kamus.
#include <stdio.h>
#include <string.h>
char word1[] = "apple";
char word2[] = "apple";
int result = strcmp(word1, word2); // Mengembalikan 0 (kedua string sama)Fungsi strcmp() mengembalikan tiga jenis nilai yang berbeda: fungsi ini mengembalikan 0 jika string-nya identik, nilai negatif jika string pertama berada sebelum string kedua dalam urutan alfabetis, dan nilai positif jika string pertama berada setelah string kedua dalam urutan alfabetis.
Fungsi ini penting untuk membuat keputusan berdasarkan isi string, seperti memvalidasi input pengguna, mengurutkan data teks, atau menerapkan fungsi pencarian dalam programmu.
Tantangan
MudahTulis program C yang menerapkan sistem verifikasi kata sandi sederhana menggunakan fungsi strcmp(). Programmu harus:
- Membaca bilangan bulat
nyang menunjukkan jumlah percobaan login yang akan diproses - Untuk setiap percobaan login:
- Membaca nama pengguna dari input
- Membaca kata sandi dari input
- Menggunakan
strcmp()untuk membandingkan nama pengguna dengan "admin" - Menggunakan
strcmp()untuk membandingkan kata sandi dengan "secret123" - Mencetak pesan yang sesuai berdasarkan hasil perbandingan
- Setelah memproses semua percobaan, menghitung dan menampilkan jumlah login yang berhasil
Logika validasi login harus seperti berikut:
- Jika nama pengguna dan kata sandi benar: cetak "Login successful"
- Jika nama pengguna benar tetapi kata sandi salah: cetak "Invalid password"
- Jika nama pengguna salah tetapi kata sandi benar: cetak "Invalid username"
- Jika nama pengguna dan kata sandi salah: cetak "Invalid credentials"
Ingat untuk menyertakan header <string.h> agar kamu dapat menggunakan fungsi strcmp().
Output-mu harus menampilkan hasil dalam format berikut:
[Login result message]
[Login result message]
...
Total successful logins: [count]Contohnya, jika input-nya adalah:
4
admin
secret123
user
password
admin
wrong
guest
secret123Output-mu harus seperti berikut:
Login successful
Invalid credentials
Invalid password
Invalid username
Total successful logins: 1Tantangan ini menguji pemahamanmu tentang penggunaan strcmp() untuk membandingkan kesamaan string, menerapkan logika percabangan berdasarkan hasil perbandingan string, dan menghitung kemunculan berdasarkan hasil perbandingan.
Coba sendiri
#include <stdio.h>
#include <string.h>
int main() {
int n;
scanf("%d", &n);
char username[100];
char password[100];
int successful_logins = 0;
// TODO: Tulis kodemu di sini
// Proses setiap percobaan login menggunakan fungsi strcmp()
// Bandingkan username dengan "admin" dan password dengan "secret123"
// Tampilkan pesan yang sesuai dan hitung login yang berhasil
printf("Total successful logins: %d\n", successful_logins);
return 0;
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Dasar-Dasar Pointer
Apa Itu Pointer?Mendeklarasikan PointerOperator Address-Of (&)Operator Dereference (*)Pointer NULLRekap: Dasar-Dasar Pointer4Proyek: Utilitas Teks Sederhana
Gambaran Umum ProyekMenghitung Karakter2Pointer dan array
Nama array sebagai pointerElemen array dan pointerAritmetika pointerMembandingkan pointerRangkuman: Menelusuri array dengan pointer5Pointer dan Fungsi
Penerusan dengan NilaiMeneruskan Pointer ke FungsiMengubah Variabel melalui PointerContoh Klasik: SwapMeneruskan Array ke FungsiRingkasan: Argumen Pointer Fungsi8Struct dan Pointer
Pointer ke StructOperator Panah (->)Mengirim Struct berdasarkan NilaiMengirim Pointer StructAlokasi Dinamis StructUlasan: Memodifikasi Struct dengan Pointer11Tantangan Rangkuman Akhir
Rangkuman: Penggabungan string DinamisRangkuman: array berisi structRangkuman: Penghitung Frekuensi Kata3Array char dan String
String sebagai array charPenanda akhir nullInput String dengan scanfMenggunakan strlen()Menggunakan strcpy()Menggunakan strcat()Menggunakan strcmp()Ulasan: Fungsi String DasarLatihan sendiri: Compiler C online