Şimdi Ara

C'de dinamik dizi olusturma sorunu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
5
Cevap
0
Favori
5.134
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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



  • 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.
  • 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;
    }





  • cok saolun kardesler denicem Insallah yapcammm
  • 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 >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.