16 Mart 2013 Cumartesi

Find and Replace

//Hepsini kafamdan yazmadım, araştıra araştıra , öğrene öğrene yazdım internette benzerlerini bulabilirsiniz.

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

#define UZUNLUK 500



int main(void) {
    char ilk_yazi[UZUNLUK], aranan_yazi[UZUNLUK], degisen_yazi[UZUNLUK];
    char ara_string[UZUNLUK], *ara_pointer;
    int i;
  

    printf("Lutfen en fazla %d karakter iceren yazi giriniz : \n ", UZUNLUK); // ana metinimizi giriyoruz
    gets(ilk_yazi);

    printf("\n Aramak istediginiz sozcugu giriniz : " ); //aramak istediğimiz sözcüğü giriyoruz
       gets(aranan_yazi);

    printf("\n Lutfen yeni sozcukleri giriniz (Eski sozcuklerin yerine gelecek olan) ");//aradığımız sözcük yerine gelecek sözcük(ler)i giriyoruz.
    gets(degisen_yazi);

    ara_pointer = strstr(ilk_yazi,aranan_yazi);//strstr(1,2) komutu 1 in içinde 2 yi arıyor . Büyük küçük farkı var.
       if( !ara_pointer )//ara pointer 0 ise değili 1 oluyor ve eşleşme yoktur der. 0 dna farklı rakamlar için 0 olur ve else kısmından devam eder.
        printf("Aradiginiz Kelime Yazida Yok\n");
    else {
    strncpy(ara_string,ilk_yazi,ara_pointer-ilk_yazi); //strcopy(1,2) 2 yi 1 e kopyalarken strncpy(1,2,3) 2 yi 1 e sadece ilk "3" birimini kopyalar.
    ara_string[ara_pointer-ilk_yazi]=0;//ara pointer-ilk_yazi farkı bize eşleşmenin başladığı yerin 1 öncesini verir ve burası boşluk olsun diye 0 yaparız
    sprintf(ara_string + (ara_pointer-ilk_yazi),"%s%s",degisen_yazi,ara_pointer+strlen(aranan_yazi)); // sprintf ekrana değil de stringe yazı yazdırmaya yarar.
    //burada amaç : ara_stringimizde değişecek yere kadar olan yazılar mevcut ona dokunmak istemiyoruz. o yüzden ilk "," e kadar olan kısım koyduğumuz boşluğa kadar.
    //boşluktan sonrasında ise %s diyerek string yazdıracağımızı bildiriyoruz.
    for(i=0;i<UZUNLUK;i++)
    ilk_yazi[i]=0;//ilk yazı stringimizi boşaltıyoruz.
    strcpy(ilk_yazi,ara_string);//ara_string imizi ilk_yazi stringimize kopyaladık.
      
    printf("\n\nYazinin son hali :\n");
    puts(ilk_yazi); //yazinin son hali yazılır.
    }
}

Hiç yorum yok:

Yorum Gönder