//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