+ Cevap Yaz
3 sonuçtan 1 ile 3 arası gösteriliyor

Konu: Dinamik Array Struct İle Kullanımı

  1. #1

    Üyelik Tarihi
    11/2009
    Mesaj
    57
    Ceviz Üyesi

    Varsayılan Dinamik Array Struct İle Kullanımı

    Kodlarım aşağıdaki şekilde.Fakat derlenmiyor.kulanımda hata olmuş olabilir diye düşünüyorum.

    record=(struct costumer*)malloc(sizeof(struct costumer)*3); <-- Burası için hata alıyorum

    Kod:
    //HEADER FILE
    #ifndef DENEME_H_EKLENDI_
    #define DENEME_H_EKLENDI_
    struct customer{ char*name;int age;};
    struct customer record[3];
    
    void insert(char name,int age)
     {
     int i;
     for(i=0;i<3;i++)   
     {
     printf("Please enter name :\n");
     scanf("%s",&record[i].name);
     printf("Please enter age:");
     scanf("%d",&record[i].age);
     }
     } 
    #endif // DENEME_H_EKLENDI_
    
    Kod:
    //main.c
    
    #include <stdio.h>
    #include "local.h"
    int main()
     {
      int name,age; 
      int i;
     
      record=(struct costumer*)malloc(sizeof(struct costumer)*3);
             
     int menu_number;
     printf("INSERT RECORD (1)\n");
     printf("SEARCH RECORD (2)\n");
     printf("LIST ALL RECORDS (3)\n");
     printf("DELETE RECORD (4)\n");
     printf("QUIT (5)\n");
     scanf("%d",&menu_number);    
     if(menu_number==1)
      insert(name,age);
     system("pause");  
      return 0;
      }
    

  2. #2

    Üyelik Tarihi
    10/2006
    Yer
    İstanbul
    Mesaj
    628
    Ceviz Üyesi

    Varsayılan

    struct customer record[3];

    satirinda sen zaten derleyiciden bir bolge almasini istemissin ve oda sana alicak, bir daha
    record=(struct costumer*)malloc(sizeof(struct costumer)*3);

    demenin manasi yok. Dogrusu;
    struct customer * record;
    record = (struct costumer*)malloc(sizeof(struct costumer) * 3);

    olucak.
    isin bittikten sonra free(customer); demeyi unutmamalisin!

  3. #3

    Üyelik Tarihi
    10/2002
    Mesaj
    3,071
    Ali Çehreli

    Varsayılan

    quasimodo aslinda free(record); yazmak istemis... Ama bence de zaten record[3] diye tanimlayabiliyorsan malloc veya free'ye gerek yok.

    spookytr, baslik dosyalarinda islevlerin yalnizca bildirimleri bulunur. Yalnizca bu satir baslik dosyasina:

    Kod:
    void insert(char name,int age);
    
    insert islevinin butun tanimi ise bir .c dosyasina gitmeli.

    Ali

+ Cevap Yaz

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

     

Bookmarks

Mesaj Yazma Hakları

  • Yeni mesajgöndermezsiniz
  • Cevap yazamazsınız
  • Dosya ekleyemezsiniz
  • Mesajınızı düzenleyemezsiniz