Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Tulis program C yang menerapkan sistem verifikasi kata sandi sederhana menggunakan fungsi strcmp(). Programmu harus:

  1. Membaca bilangan bulat n yang menunjukkan jumlah percobaan login yang akan diproses
  2. 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
  3. 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
secret123

Output-mu harus seperti berikut:

Login successful
Invalid credentials
Invalid password
Invalid username
Total successful logins: 1

Tantangan 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;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C online