C Verisine Eski Veriyle Toplayarak Ekleme
C programlama dilinde, mevcut bir veri yapısına yeni veriler eklemek için çeşitli yöntemler vardır. Bu yöntemlerden biri, mevcut veriyi yeni veriyle toplayarak eklemektir. Bu işlem, realloc()
fonksiyonu ile yapılabilir.
realloc()
Fonksiyonu
realloc()
fonksiyonu, daha önce ayrılmış bir bellek bloğunun boyutu değiştirir. Fonksiyonun prototipi şu şekildedir:
c
void *realloc(void *ptr, size_t size);
Burada:
ptr
: Boyutu değiştirilecek bellek bloğunun adresini gösteren bir işaretçidir.size
: Bellek bloğunun yeni boyutu (bayt cinsinden).
realloc()
fonksiyonu başarılı olursa, yeniden ayrılmış bellek bloğunun adresini döndürür. Başarısız olursa, NULL
döndürür.
Veri Toplayarak Ekleme
Mevcut bir veri yapısına veri toplamak için realloc()
fonksiyonu şu şekilde kullanılır:
- Mevcut veri yapısının adresini
ptr
değişkenine atayın. - Yeni veri yapısının toplam boyutu (bayt cinsinden) için
size
değişkenini hesaplayın. realloc()
fonksiyonunuptr
vesize
parametreleriyle çağırın.realloc()
fonksiyonunun döndürdüğü adresiptr
değişkenine atayın.
Bu işlem, mevcut veri yapısının boyutu değiştirilerek yeni verilerin ekleneceği yeni bir bellek bloğu ayrılmasını sağlayacak.
Örnek Kod
Aşağıdaki kod örneği, bir dizinin sonuna yeni bir öğe eklemek için realloc()
fonksiyonunu kullanmaktadır:
“`c
include
include
int main() {
// Mevcut diziyi tanımlayın
int dizi = (int )malloc(sizeof(int) * 5);
dizi[0] = 1;
dizi[1] = 2;
dizi[2] = 3;
dizi[3] = 4;
dizi[4] = 5;
// Yeni öğeyi tanımlayın
int yeni_ogrenci = 6;
// Dizinin boyutu değiştirin ve yeni öğeyi ekleyin
dizi = (int *)realloc(dizi, sizeof(int) * (5 + 1));
dizi[5] = yeni_ogrenci;
// Yeni diziyi yazdırın
for (int i = 0; i < 6; i++) {
printf("%d ", dizi[i]);
}
// Ayrılan belleği serbest bırakın
free(dizi);
return 0;
}
“`
Bu kod çıktısı:
1 2 3 4 5 6