C'de String İçi Karakter Arama

yavuzslymn

Hectopat
Katılım
1 Aralık 2014
Mesajlar
45
Daha fazla  
Cinsiyet
Erkek
Yarın Programlamaya giriş sınavım var da geçen sene finalde sorulan sorulara bakayım dedim. Bu kod girilen stringde istenilen karakterin kaçıncı sırada olduğunu buluyor fakat ben kodu tam olarak anlayamadım. Kısaca açıklayabilecek var mı acaba?


Kod:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

void myStringSearch(const char*,const char,int *);

int main()
{
    char myString[]="aabkaaa";
    char charToFind='k';
    
    int result;
    myStringSearch(myString,charToFind,&result);
    
    if(result!=-1)
        printf("KARAKTER BULUNDU %d\n",result+1);
    else
        printf("KARAKTER BULUNAMADI.\n");
}
void myStringSearch(const char*param1,const char param2,int *sonuc)
{    int i,tut=0;

    for(;*param1!='\0';param1++)
    {    
        if(tut==0)
            if(*param1==param2)
            {    *sonuc=i;
                    tut++;
            }
    i++;
    }

}
 
Sayfamda bu tür şeyler yapıyorum incelemenizi öneririm.
Sorularınızıda sayfamdan ya da buradan sorabilirsiniz.

Programınızı basitçe şu şekilde anlatıyım.

İlk önce bir fonksiyon tanımlanmış : MyStringSearch diye
Alacağı parametrelerinide yazmış.
Bu şekilde tanımlamış olduk yani daha sonra fonksiyonlarda sıkıntı çekmeyeceğiz yoksa main de o fonksiyon çağrılsaydı tanınmıyor denirdi.

Daha sonra main fonksiyonunda bir kelime grubu tanımlanmış ve aranacak kelime girilmiş o da "k" harfi.
Daha sonra Search fonsiyonuna kelime grubu ve "k" harfi gönderilmiş birde result değişkeninin bellek konumu gönderilmiş bu sayede diğer fonksiyonda result un değerini değiştirebiliriz.

Daha sonra eğer result değeri -1 değilse k harfi var demekmiş.

Search fonksiyonunda ise:
Döngüyle o harf gurubu teker teker bakılması sağlanmış.
Döngünün içindede sıradaki harfin k olup olmadığına bakan bir kod yazılmış.

Basitçe, yazılan kelimede istenilen kelimenin olup olmadığına bakan bir program.

Şimdi bunu dışarıda yazdım umarım anlşılırdır. Yazım hatası olabilir kusurabakmayın.
 
Uyarı! Bu konu 8 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Yeni konular

Geri
Yukarı