PDA

View Full Version : Strutture in C



Fabiomad^^'
20-10-2006, 13:11
ho una domanda....mA poxo inseririe una struttura in una struttura dopo aver dichiarato la prima???
Perchè il compilatore si incazza...
Cmq x capirci.. il codice è tipo...

struct Data1
{
int a, b, c;
int sp;
}

crea data1()
{
....
}
struct Data2
{
struct *Data1;
int sp2;
}

se non è chiaro ditelo che vi paxxo il codice...

eldiabloz
20-10-2006, 14:15
Si dovresti potere. Se lo ritrovo ti posto un esempio del mio profe dell'uni :sbav:

edWRd
20-10-2006, 14:40
si dovresti.
ma il compilatore si incazza in che senso? da errore o warning?

waL
20-10-2006, 19:33
non vorrei dire stronzate perche non mi ricordo molto pero non dovresti prima di dichiarare un puntatore ad una struc allocare spazio con la malloc ??

NaNNy
20-10-2006, 21:17
quello che vuoi fare si può definire una semilista :asd:

cmq ora non me ricordo più niente, se ho tempo in questi giorni ti ci guardo

Fabiomad^^'
21-10-2006, 09:20
#include <stdio.h>
#include <stdlib.h>
#define max 20

struct Scheda
{
char *nome;
char *cognome;
char *telefono;
int sp1;//indica il primo elemento vuoto
};
struct Scheda *creaScheda()//creo la prima struttura che contiene
{
struct Scheda *p;//creo puntatore a struttura

p=(struct Scheda *)malloc(sizeof(struct Scheda));// inizalizzo il puntatore alla struttura Stack


p->nome = (char *)malloc(30*sizeof(char));// inzializzo il puntatore che mi fa accedere ai dati ( a una dimensione di 100 interi in questo caso)
p->cognome = (char *)malloc(30*sizeof(char));
p->telefono = (char *)malloc(30*sizeof(char));
p->sp1 = 0;// inizalizzo a zero il puntatore che punta a Stack pointer(prima posizione libera dello stack)
return p;
}

struct Rubrica
{
struct Scheda *Amici;
int sp2;
};
struct Rubrica *creaRubrica()//creo la prima struttura che contiene
{
struct Rubrica *pr;//creo puntatore a struttura

pr = (struct Rubrica *)malloc(sizeof(struct Rubrica));// inizalizzo il puntatore alla struttura Stack

pr->Amici=(struct *)malloc(5*sizeof(struct));// inzializzo il puntatore che mi fa accedere ai dati ( a una dimensione di 100 interi in questo caso)
pr->sp2 = 0;// inizalizzo a zero il puntatore che punta a Stack pointer(prima posizione libero dello stack)
return pr;
};
void pushScheda(Scheda *p, char [], char [], char [])// passo alla funzione che riempie la struttura contenente i dati gli elmementi delle strighe che andrò ad inserire nella struttura
{
int i;
for(i=0; i<max;i++)
{
p->nome[p->sp1]=;//vettore di comodo che mettoin posizione [i]
p->cognome[p->sp1]=;
p->telefono[p->sp1]=;
p->sp1++;
}
};
void pushRubrica(Rubrica *pr)
{
pr->Scheda[pr->sp2]=
pr->sp2++;

};

Fabiomad^^'
21-10-2006, 09:21
questo è il codice..... dove ho sbagliato???

`m4rk-
22-10-2006, 03:23
nn riesco a trovare l' errore. sembrerebbe tutto ok

Fabiomad^^'
24-10-2006, 08:20
invece c'è... ed è.... nella dichiarazione della struttura nella struttura.. qnd chiamo la malloc.... nella struttura rubrica....GRRRRR

Fabiomad^^'
25-10-2006, 13:17
ho risolto... era un problema di allocazione.... ora funge:rulez: :rulez: :rulez: