Non so cosa devi fare di preciso, ma i casi sono due.
Se dichiari n come una variabile di tipo nodo devi fare :
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;
}
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)
{
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;
}