CodeBlanks Logo Icon CodeBlanks

Özet - İleri dize işleme

  • C kursu
  • Orta seviye
  • Ders 23/116
  • 5 dk

Dinamik dize, dönüştürme ve güvenliği birleştirerek bir dize tamponu yazarsın.

Dize tamponu tasarımı

Bu özette malloc, strncpy ve strncat'i birleştirerek dinamik bir dize tamponu yazacaksın. Tampon, güvenli şekilde dize biriktirir.

İlk olarak malloc ile yeterince büyük bir bellek ayırırsın. Sonra strncpy ile ilk dizeyi güvenli kopyalarsın; null sonlandırmayı garantilersin. Daha sonra strncat ile ikinci dizeyi sınırlı şekilde eklersin. Bu desen, kullanıcı girişi ve ağ verilerinde standarttır; taşmayı önler ve sızıntıyı engeller. İş bitince free ile iade edersin.

Uygulama Dize tamponu yaz

char *buf = malloc(20); ile yirmi baytlık tampon ayır. strncpy(buf, "Merhaba", 19); ile ilk dizeyi kopyala. buf[19] = '\0'; ile null sonlandır. strncat(buf, " dünya", 19 - strlen(buf)); ile ikinci dizeyi ekle. printf("%s\n", buf); ile yazdır. free(buf); ile iade et. <stdlib.h> ve <string.h> başlık dosyalarını ekle.

Başlangıç kodu

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

// malloc ile 20 baytlık tampon ayır
// strncpy ile "Merhaba" kopyala, null sonlandır
// strncat ile " dünya" ekle, yazdır ve free ile iade et

int main(void) {
    return 0;
}

Örnek çözüm

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

int main(void) {
    char *buf = malloc(20);
    strncpy(buf, "Merhaba", 19);
    buf[19] = '\0';
    strncat(buf, " dünya", 19 - strlen(buf));
    printf("%s\n", buf);
    free(buf);
    return 0;
}

Beklenen çıktı

Merhaba dünya

Özet

Bu grupta ileri dize işleme tekniklerini öğrendin. Dinamik dize için malloc, birleştirme için strcat ve sprintf, arama için strstr ve strchr, dönüştürme için atoi, atof ve strtol, güvenlik için strncpy ve strncat öğrendin.

Bunları birleştirerek güvenli bir dize tamponu yazdın. malloc ile ayırdın, strncpy ile güvenli kopyaladın, strncat ile sınırlı birleştirdin ve free ile iade ettin. Bu desen, gerçek dünyadaki metin işleme uygulamalarının temelidir.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Tampon adımlarını eşle

Kavram Anlamı
malloc Bellek ayır
strncpy İlk dizeyi kopyala
strncat İkinci dizeyi ekle
free Tamponu iade et

2 Dize tamponunda neden strncpy tercih edilir?

  • Sınır kontrolü yaptığı için Doğru cevap
  • Daha hızlı olduğu için
  • Daha az bellek kullandığı için
  • Otomatik null eklediği için

Açıklama: strncpy sınır kontrolü yapar; bu yüzden güvenli tamponlarda tercih edilir.

Orta seviye bölümündeki tüm dersler