CodeBlanks Logo Icon CodeBlanks

strstr

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

strstr ile alt dize aramayı öğrenirsin.

strstr: alt dize arama

strstr fonksiyonu bir dize içinde başka bir dizeyi arar. İmzası char *strstr(const char *s, const char *sub) biçimindedir. <string.h> başlığıyla gelir.

char *p = strstr("merhaba dunya", "dunya");
// p, "dunya" kısmını gösterir

Bulunan yerin başlangıç indeksini almak için yine p - s kullanırsın. Bulunamazsa NULL döner. strchr tek karakter arar; strstr ise birden fazla karakterden oluşan alt dizeyi arar.

strstr örneği: indeks hesabı

strstr dönen işaretçiyi, dizenin başlangıcından çıkararak alt dizenin başlangıç indeksini elde edersin.

char text[] = "merhaba dunya";
char *p = strstr(text, "dunya");
long index = p - text;
// index = 8

Burada "dunya" alt dizesi 8. indeksten başlar. p'nin NULL olabileceğini unutmadan, çıkarma yapmadan önce kontrol etmelisin. Bu desen, dizede bir kelimenin nerede geçtiğini bulmak için çok kullanışlıdır.

Uygulama "dunya" alt dizesinin indeksini yazdır

strstr ile "merhaba dunya" dizesindeki "dunya" alt dizesinin başlangıç indeksini bul ve printf ile yazdır. <string.h> başlığını eklemelisin.

Başlangıç kodu

main.c
#include <stdio.h>

int main(void) {
    char text[] = "merhaba dunya";
    /* strstr ile "dunya" başlangıç indeksini bul ve yazdır */
    return 0;
}

Örnek çözüm

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

Beklenen çıktı

8

Soru ve cevaplar

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

1 Fonksiyon ve görev eşleştir

Kavram Anlamı
strstr(s, sub) Alt dize arar
strchr(s, c) Karakter arar
strcmp(a, b) Karşılaştırır
strlen(s) Uzunluğu verir

2 strstr("merhaba", "ha") çağrısı ne döndürür?

  • 0 değeri
  • "ha" ile başlayan işaretçi Doğru cevap
  • İlk 'h' indeksi
  • NULL

Açıklama: strstr eşleşen kısmın başını işaretçi olarak verir.

3 Boşluğu doldur: strstr çağrısı

Soru
char *p = ____(text, "dunya");
Cevap
char *p = strstr(text, "dunya");

Açıklama: Alt dize arayan fonksiyon.

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