CodeBlanks Logo Icon CodeBlanks

strcmp

  • C kursu
  • Başlangıç
  • Ders 63/116
  • 5 dk

strcmp ile iki dizeyi karşılaştırmayı öğrenirsin.

strcmp ile dize karşılaştırma

İki dizeyi == ile karşılaştıramazsın; bu, adresleri karşılaştırır. Bunun yerine strcmp kullanırsın.

int result = strcmp("elma", "elma");
/* result = 0: eşit */
int diff = strcmp("elma", "armut");
/* diff < 0: "elma" daha küçük */

strcmp negatif, sıfır veya pozitif döner. Sıfır dizeler eşit anlamına gelir. Karşılaştırma, karakterlerin ASCII değerlerine göre yapılır.

ASCII sıralaması

strcmp karşılaştırmayı karakterlerin ASCII değerlerine göre yapar. Büyük harfler küçük harflerden önce gelir: 'A'=65, 'a'=97. Bu yüzden strcmp("Elma", "elma") negatif döner.

strcmp("Armut", "Armut");  /* 0 */
strcmp("Armut", "elma");   /* negatif */
strcmp("elma", "Armut");   /* pozitif */

Sıralama büyük/küçük harfe duyarlıdır. Eşitlik testlerinde sonucun == 0 olup olmadığına bakılır.

Uygulama İki şifreyi karşılaştır

İki char dizisi tanımla: "sifre123" ve "sifre123". strcmp ile karşılaştır ve sonucu printf %d ile yazdır. Eşitlerse sonuç 0 olmalı; çıktı 0 olmalı.

Başlangıç kodu

main.c
#include <stdio.h>
#include <string.h>

int main(void) {
    /* iki char dizisi tanımla */
    /* strcmp ile karşılaştır ve printf %d ile yazdır */
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <string.h>

int main(void) {
    char a[] = "sifre123";
    char b[] = "sifre123";
    int r = strcmp(a, b);
    printf("%d\n", r);
    return 0;
}

Beklenen çıktı

0

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 strcmp dönüş değerleri

Kavram Anlamı
0 dizeler eşit
negatif ilk daha küçük
pozitif ilk daha büyük
== adresleri karşılaştırır

2 `strcmp("elma", "elma")` ne döner?

main.c
int r = strcmp("elma", "elma");
  • -1
  • 2
  • 1
  • 0 Doğru cevap

Açıklama: Eşit dizeler için strcmp 0 döner.

3 Eşitlik testi

Soru
if (strcmp(a, b) ____) { /* dizeler eşit */ }
Cevap
if (strcmp(a, b) == 0) { /* dizeler eşit */ }

Açıklama: strcmp 0 dönerse dizeler eşittir.

Başlangıç bölümündeki tüm dersler