CodeBlanks Logo Icon CodeBlanks

strchr

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

strchr ile dizede karakter aramayı öğrenirsin.

strchr: karakter arama

strchr fonksiyonu bir dizede belirli bir karakterin ilk geçtiği konumu bulur. <string.h> başlık dosyasıyla gelir. İmzası char *strchr(const char *s, int c) biçimindedir.

char *p = strchr("merhaba", 'a');
// p, ilk 'a' harfini gösterir

Bulamazsa NULL döndürür. Dönen değer bir işaretçi olduğu için, dizedeki indeksi hesaplamak için p - s çıkarması yaparsın. Bu, karakterin baştan kaçıncı konumda olduğunu verir.

İşaretçi ile indeks hesaplama

strchr bir işaretçi döndürür; indeksi değil. Dizedeki indeksi bulmak için dizenin başlangıcından çıkarma yaparsın.

char text[] = "merhaba";
char *p = strchr(text, 'a');
long index = p - text;
// index = 4

Burada p ilk 'a' harfının adresini tutar; text ise dizinin başlangıcıdır. İki işaretçi farkı, aralarındaki eleman sayısını verir. Böylece karakterin kaçıncı konumda olduğunu öğrenirsin. p'yi NULL mı diye kontrol etmeyi unutma.

Uygulama İlk 'a' harfının indeksini yazdır

strchr ile "merhaba dunya" dizesindeki ilk 'a' harfının konumunu bul ve printf ile indeksi yazdır. strchr kullanmak için <string.h> başlığını eklemelisin.

Başlangıç kodu

main.c
#include <stdio.h>

int main(void) {
    char text[] = "merhaba dunya";
    /* strchr ile ilk 'a' konumunu bul ve yazdır */
    return 0;
}

Örnek çözüm

main.c
#include <string.h>
char *p = strchr(text, 'a');
if (p != NULL) {
    printf("%ld\n", (long)(p - text));
}

Beklenen çıktı

4

Soru ve cevaplar

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

1 strchr karakteri bulamazsa ne döndürür?

  • NULL Doğru cevap
  • Boş bir dize
  • 0
  • -1

Açıklama: strchr bulamazsa NULL döndürür; bu, geçersiz işaretçi demektir.

2 Boşluğu doldur: strchr çağrısı

Soru
char *p = ____(text, 'a');
Cevap
char *p = strchr(text, 'a');

Açıklama: strchr bir karakter arar.

3 Çağrı ve davranış eşleştir

Kavram Anlamı
strchr(s, c) İlk c konumu
p - s İndeks değeri
NULL Bulunamadı
char * İşaretçi türü

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