Sn un po arrugginito con le liste ma provo a risp. Dunque tu passi un puntatore alla funzione e poi ci assegni un valore all interno della funzione, questo non va bene perchè quando esci dalla funzione il puntatore che hai passato puntera alla cella a cui puntava prima della chiamata. Quindi devi passare il puntarore per "riferimento" e quindi devi passare il "puntatore a puntatore"Originariamente inviato da jacopos81
sempre nell'argomento delle liste e altri tipi astratti.. se io ho una cosa del genere:
dov'è che sbaglio?? perche nn riesco a copiare i valori corretti passati in input (prova, 6) nei campi del nodo n ?? suppongo che sbagli qualcosa al livello di puntatori..ma non mi pare d vedere errori...codice:typedef struct { char *nome; int id; } nodo; int nuovo_nodo(nodo *n, char *name, int x) { printf("creato nuovo nodo\n"); n = (nodo*)malloc(sizeof(nodo)); n->nome = (char *)malloc(sizeof(char) * 50); n->nome = strcpy(n->nome,name); n->id = x; return 0; } int main() { nodo n; int prova; prova = nuovo_nodo(&n,"prova",6); printf("nome del nodo: %s\tid: %d\n",n.nome,n.id); return 0; }
(PS: le funzioni devono necessariamente tornare valori int)
int nuovo_nodo(nodo **n, char *name, int x) {
printf("creato nuovo nodo\n");
(*n) = (nodo*)malloc(sizeof(nodo));
n->nome = (char *)malloc(sizeof(char) * 50);
n->nome = strcpy(n->nome,name);
n->id = x;
return 0;
}
int main() {
nodo n;
int prova;
prova = nuovo_nodo(&n,"prova",6);
printf("nome del nodo: %s\tid: %d\n",n.nome,n.id);
return 0;
prova un po cosi...spero funzioni! fammi sapere! buona giornata!
![]()
![]()

Rispondi quotando