Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /var/www/vhosts/bilgigunlugum.net/httpdocs/index.php on line 43
C Programlama

BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C standart kütüphanesi > <string.h> > strstr

strstr() fonksiyonu

Bildirim

char* strstr(const char *str1, const char *str2);

Açıklama

Str2 parametresi ile gösterilen ve boş bir karakter ('\0') ile sonlandırılmış karakter dizisinin, str1 parametresi ile gösterilen ve boş bir karakter ('\0') ile sonlandırılmış karakter dizisinin içindeki ilk yerini bulur.

Eğer aranan karakter dizisi bulunamazsa NULL bir işaretçi geri döndürür.

Str1 veya str2 parametresi boş bir karakterle sonlandırılmış bir karakter dizisini gösteren bir işaretçi değilse, sonuç belirsiz olabilir.

Parametreler

str1: Arama yapılacak karakter dizisinin başlangıcını gösteren bir işaretçidir.

str2: Aranacak karakter dizisinin başlangıcını gösteren bir işaretçidir.

Dönüş değeri

Str2 parametresi ile gösterilen karakter dizisinin str1 parametresindeki karakter dizisi içinde bulunduğu yerin bellek adresini geri döndürür. Eğer aranan karakter dizisi bulunamazsa NULL bir işaretçi veya str2 parametresi boş bir dizi içeriyorsa str1 değerini geri döndürür.

Örnek


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

int main(void)
{
    const char *cp1 = "Bilgisayar";
    const char *cp2 = "sayar";
    char *ret = strstr(cp1, cp2);

    printf("%s karakter dizisinde bulunan dizi: %s, adresi: %p, indeksi: %d\n", cp1, ret, ret, ret-cp1);

    return 0;
}


Yukarıdaki örnekte, program aşağıdaki satırı ekrana yazar.

Bilgisayar karakter dizisinde bulunan dizi: sayar, adresi: 00403029, indeksi: 5

Program strstr() fonksiyonu ile bir karakter dizisinin diğer karakter dizisi içinde bulunduğu ilk yerin bellek adresini geri döndürür. Bu adres değerini kullanarak bulunan karakter dizisini, bellek adresini ve başlangıç indeks değerini ekrana yazar.

Kaynak kodu

Copyright Public domain


char* strstr(const char *str1, const char *str2)
{
  size_t n = strlen(str2);
  
  while(*str1) {
    if(!memcmp(str1++, str2, n))
       return s1-1;
  }		
  
  return 0;
}