Ö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
#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
#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.