Non so cosa devi fare di preciso, ma i casi sono due.
Se dichiari n come una variabile di tipo nodo devi fare :
Se dichiari n come un puntatore al tipo nodo :codice:typedef struct { char *nome; int id; } NODO; int nuovo_nodo( NODO *n, char *name, int x) { n->nome = (char *)malloc(sizeof(char) * strlen(name)+1); strcpy(n->nome, name); n->id = x; return 0; } int main() { NODO n; /* <<<< Attenzione */ nuovo_nodo( &n, "prova", 6); printf("nome del nodo: '%s'\tid: %d\n", n.nome, n.id); return 0; }
codice:typedef struct { char *nome; int id; } NODO; int nuovo_nodo( NODO **n, char *name, int x) { if( (*n) ) free( *n ); (*n)= (NODO*)malloc(sizeof(NODO)); if( (*n) ) { (*n)->nome = (char *)malloc(sizeof(char) * strlen(name)+1); strcpy((*n)->nome, name); (*n)->id = x; return 1; } return 0; } int main() { NODO *n=NULL; /* <<<< Attenzione */ nuovo_nodo( &n, "prova", 6); printf("nome del nodo: '%s'\tid: %d\n", n->nome, n->id); nuovo_nodo( &n, "Nuovoa prova", 6); printf("nome del nodo: '%s'\tid: %d\n", n->nome, n->id); return 0; }

Rispondi quotando