[ Ambien @ 05.03.2011. 09:01 ] @
Code:
struct key_list
{
 char *key_name;
 char *key_val;
 struct key_list *next;
};

typedef struct _ini_list
{
 char *sect_name;
 struct key_list *keys;
 struct _ini_list *next;
}ini_list;

void add_sect(ini_list **il, const char *s_name)
{
 ini_list *tmp=NULL;
 ini_list *p=NULL;

 tmp = (ini_list*)malloc(sizeof(ini_list));
 tmp->sect_name=(char*)malloc(strlen(s_name)+1);
 strcpy(tmp->sect_name,s_name);
 if(*il==NULL)
 {
  *il=tmp;
  tmp->next=NULL;
 }
 else
 {
  p = *il;
  while(p->next != NULL)
  {
   p=p->next;
  }
  p->next=tmp;
  tmp->next=NULL;
 }
}

void free_sect(ini_list *il)
{
 ini_list *tmp;

 while(il != NULL)
 {
  tmp = il->next;
  free(il->sect_name);
  free(il);
  il=tmp;
 }
}

Ovaj kod iznad radi perfektno, ali zelio bih da uradim nesto novo tj. da iskoristim postojecu funkciju za dodavanje sekcije tako sto cu je moci iskoristiti i za dodavanje kljuceva. Nista mi konkretno ne pada na um, nisam odavno radio u C-u, mislio sam da to uradim preko void pokazivaca ali opet nista. Da sumiram, postoji li nacin da vrsim alociranje memorije za dvije vrlo slicne strukture sekcija i kljuc koristeci samo jednu funkciju.

Hvala,
Pozdrav!
[ miniplazma @ 11.04.2011. 23:37 ] @
Najjednostavnije ti je da uradiš

typedef struktura_podataka Item;

I zavisno koju strukturu podataka koristiš, ovu lliniju koda izmjeniš. U tvom slučaju ako hoćeš da koristiš listu tipa key_list
typedef struct key_list item; // u citavom programu promjenljive koje si deklarisao sa key_list zamjeni u item

Ako hoćeš listu jabuka(blesav primjer ali nema veze :p )
typedef struct jabuka item;

Nadam se da ti je ovo pomoglo.