realloc komutu

Kapalı Hesap (143366)
09-03-2010, 23:19   |  #1  
OP Kapalı Hesap
Teşekkür Sayısı: 0
3 mesaj
Kayıt Tarihi:Kayıt: Tem 2009

Selamlar herkese,
1-2 saattir uğraştığım bir konuda yardım almak istedim.

typedef struct { char *name[100]; int age;} record;
record yeni_kisi;

basit bi kayıt sistemi gibi bişi yapmaya çalışıorum. kullanıcının kaç tane yeni kişi gireceğini bilmediğim için realloc komutu ile sürekli yeni yer açmam lazım. Belki çok kolaydır ama acemi olduğum için yapamadım. Yardımcı olursanız sevinirim.

muh34
18-10-2010, 01:17   |  #2  
Yıllanmış Üye
Teşekkür Sayısı: 0
215 mesaj
Kayıt Tarihi:Kayıt: Eki 2010

realloc() gerekli parametreler ile bellekten yer isteyen bir operator olarak işlev gorur.Olusturdugunuz record yapısı icerisinde name dizgisini pointer ile olusturdugunuz anda,onu [] operatoru ile iki boyutlu yapmanıza gerek yoktur.record yapısı icerisinde tanımlanan char *name; ifadesi yeterli olacaktır.Bu katara yer acmak malloc operatoru ile daha basitce gerceklestirilebilir.Bu sorudaki name katarı icin -> yeni_kisi.name=(char *)malloc(sizeof(char)); şeklinde bir bellek istemi yapılabilir.Ancak olusturulan yapı degiskeninin bir işaretci olması durumunda(orn: record *yeni_kisi)boyle bir tanım gecerli olacaktır,
yeni_kisi=(record *)malloc(sizeof(record));
Yapı icerisinde şayet bir katarı dizi(array) olarak ifade ederseniz,bellekten hic bir sekilde istem yapmanıza mahal olacak bir durum olmaz.
Başarılar

Son Düzenleme: muh34 ~ 18 Ekim 2010 01:19