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
#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
#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?
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
if (strcmp(a, b) ____) { /* dizeler eşit */ }
if (strcmp(a, b) == 0) { /* dizeler eşit */ }
Açıklama: strcmp 0 dönerse dizeler eşittir.