Necati Ergin Hocamın kendi sayfasında bulunan çalışma sorularını ve cevaplarını burada yanıtlamaya çalıştım. Sorulara buradan ulaşabilirsiniz.
Aşağıda bildirimi verilen remove_str isimli işlevin kodunu yazınız:
remove_str işlevi birinci parametresine gönderilen adresteki yazının içinden ikinci parametresine adresi geçilen yazıyı (varsa) silecek.
Eğer pstr adresi içindeki yazıda pdel adresindeki yazı birden fazla geçiyorsa silme işlemi yalnızca birinci yazı için gerçekleştirilecek.
Eğer silinecek yazı pstr adresinde yer almıyorsa işlev bir silme işlemi gerçekleştirmeyecek.
İşlevin geri dönüş değeri içinde silme işlemi gerçekleştirilmiş yazının adresi. (pstr adresi)
Tanımladığınız işlev içinde standart C işlevlerine çağrı yapabilirsiniz.
Tanımladığınız işlevi aşağıdaki kodla test edebilirsiniz:
Tanımladığınız işlev içinde standart C işlevlerine çağrı yapabilirsiniz.
Tanımladığınız işlevi aşağıdaki kodla test edebilirsiniz:
Yanıt:
| 
  char * remove_str(char *pstr, const char *pdel); | 
Eğer pstr adresi içindeki yazıda pdel adresindeki yazı birden fazla geçiyorsa silme işlemi yalnızca birinci yazı için gerçekleştirilecek.
Eğer silinecek yazı pstr adresinde yer almıyorsa işlev bir silme işlemi gerçekleştirmeyecek.
İşlevin geri dönüş değeri içinde silme işlemi gerçekleştirilmiş yazının adresi. (pstr adresi)
Tanımladığınız işlev içinde standart C işlevlerine çağrı yapabilirsiniz.
Tanımladığınız işlevi aşağıdaki kodla test edebilirsiniz:
Tanımladığınız işlev içinde standart C işlevlerine çağrı yapabilirsiniz.
Tanımladığınız işlevi aşağıdaki kodla test edebilirsiniz:
#include <stdio.h> #include <string.h> char *removeStr(char *ptr, const char *p); int main() { char s1[] = "bugun pazartesi gunu"; char s2[] = "ali 2345metin 2345"; puts(removeStr(s1, "tesi")); // bugun pazar gunu puts(removeStr(s2, "2345")); //ali metin 2345 }
Yanıt:
#include <stdio.h> #include <string.h> char *removeStr(char *ptr, const char *p) { size_t len1 = strlen(ptr); size_t len2 = strlen(p); char *ps; if (len1 > len2 && (ps = strstr(ptr, p))) { memmove(ps, ps + len2, len1 - (ps - ptr) - len2 + 1); } return ptr; } int main() { char s1[] = "bugun pazartesi gunu"; char s2[] = "ali 2345metin 2345"; puts(removeStr(s1, "tesi")); // bugun pazar gunu puts(removeStr(s2, "2345")); //ali metin 2345 }
 
Hiç yorum yok:
Yorum Gönder
Son Ütücü