Arama butonu
Bu konudaki kullanıcılar: 1 misafir
4
Cevap
5184
Tıklama
0
Öne Çıkarma
C'de dinamik dizi olusturma sorunu
N
18 yıl
Yüzbaşı
Konu Sahibi

arakdaslar oncelikle slmlar.. problemim su dinam ik dizi olusturmak istyorum .. burda amacim diyelimki kullanici bir deger gircek kalvayeden ve bu kadr elamnli bir dizi olusturcam... bunu şöyle yapnca hata veryo

int kullanci_degeri;
scanf("%d",&kullanici_degeri);
double dizi[kullanici_degeri];

ve biraz daha dvmi varda onmli diil.. burda diyoki dizi tanimlarken sabit bir deger girmelisin... 5,10 gibi.. daha soran malloc kullandim beceremedim yardim edrseniz sevinirim arkadaslar cok tesekkuler

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



R
18 yıl
Yüzbaşı

malloc ile boyutu çalışma zamanında belli olacak diziler için alan ayrılır. kullanımı;

 
int main(void)
{
char *s

s = malloc(1000) /*dizi için bin byte ayır

gets(s[1])

return 0;
}


Örnek hiç bir şey yapmıyor. Sadece basitçe kullanımını gösterdim. burada 1000 yerine klavyeden girilen bir değeri atayabilirsin. Sonra da diziyi istediğin gibi kullanırsın. Yalnız önemli olan nokta dizinin bir işaretçi ile tanımlanması gerektiği.


Bu mesaja 1 cevap geldi.
A
18 yıl
Yüzbaşı

quote:


int kullanci_degeri;
scanf("%d",&kullanici_degeri);
double dizi[kullanici_degeri];


C++da sorum olmaz ama Cde bazi derleyiciler islemlerden sonra degisken tanimlamana izin vermiyor. Senin de farkina vardigin gibi.

int kullanci_degeri;
double dizi[kullanici_degeri];
scanf("%d",&kullanici_degeri);

olursa calisir, ama buradaki problem de kullanici_degeri'ni bilmiyor olman.

Arkadasin bahsettigi malloc yontemi ile calisan bir program yazayim sana cabucaktan...


 
#include <stdio.h>
#include <stdlib.h>

int main() {
int* i;
int j,k;

printf("j=");
scanf("%d",&j);
i = malloc(sizeof(int)*j);

for(k=0;k<j;k++)
scanf("%d",i+k);

for(k=0;k<j;k++)
printf("%d \n",*i+k);

free(i);
return 0;
}



Bu mesaja 1 cevap geldi.
N
18 yıl
Yüzbaşı
Konu Sahibi

cok saolun kardesler denicem Insallah yapcammm


Bu mesaja 1 cevap geldi.
N
18 yıl
Çavuş

tabi malloc'tan önce cast işleminin yapılması da iyi bir alışkanlık olur.
i=(int *)malloc(sinir*sizeof(int)); 
str=(char *)malloc(boyut*sizeof(char));


gibi





< Bu mesaj bu kişi tarafından değiştirildi N£fR£´|` -- 1 Mart 2007; 20:28:30 >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.