CcandaluarMolto attivoIscritto daago, 2013Messaggi190009 mar 2018, 14:58Stai copiando un puntatore, non una stringa! Devi utilizzare strcpy().
/Anonimizzato22934Utente anonimizzato09 mar 2018, 15:00Mi potresti gentilmente spiegare come funziona non la conosco
CcandaluarMolto attivoIscritto daago, 2013Messaggi190009 mar 2018, 15:11C'è anche un esempio, questa funzione è una delle funzioni fondamentali della libreria C ... ma in quale libro stai studiando?
/Anonimizzato22934Utente anonimizzato09 mar 2018, 15:17Ehm non ho un libro di testo (so che devo procurarmene uno al più presto)comunque grazie ora ci provo
/Anonimizzato22934Utente anonimizzato09 mar 2018, 15:26 void aggiungifiglio(FAMIGLIA*f,char a[20],int anni1,char sesso1){ int xx=f->numerFigli; f->numerFigli=xx+1; strcpy(f->figli[xx]->nome,a); f->figli[xx]->anni=anni1; f->figli[xx]->sesso=sesso1; } è corretto utilizzarlo così ?
/Anonimizzato22934Utente anonimizzato09 mar 2018, 15:29Perchè non mi da errori di compilazioni ma quando richiamo il sottoprogramma l exe smette di funzionare
/Anonimizzato22934Utente anonimizzato09 mar 2018, 15:58È quello mostrato nel primo post .credo di aver capito perchè mi va in errore io aumento solo numer figli e non aumento la lunghezza dell'array però gli array non possono essere modificati quindi presumo di dover creare una nuova famiglia ?
OoregonSuper FamosoIscritto danov, 2011Messaggi2191709 mar 2018, 15:59L'array dei figli è costituito da puntatori a struttura. Se hai a disposizione la struttura (come nei primi due casi), puoi usare il puntatore e assegnarlo. Ma nel caso della funzione, non hai ancora una struttura di cui assegnare il puntatore, devi creartela in base ai dati. Ovvero, prima della strcpy devi allocare lo spazio per la nuova struttura, quindi manca una f->figli[xx] = new PERSONA();
/Anonimizzato22934Utente anonimizzato09 mar 2018, 16:20Una cosa del genere non ha senso vero ? PERSONA * aggiungifiglio(FAMIGLIA*f,char a[20],int anni1,char sesso1){ int x=f->numerFigli+1; f->figli[x-1]=f->figli[x]; strcpy(f->figli[x]->nome,a); }
/Anonimizzato22934Utente anonimizzato09 mar 2018, 16:20Devo per forza copiarmi tutta la struttura f in una nuova struttura che aggiunga un figlio ?
OoregonSuper FamosoIscritto danov, 2011Messaggi2191709 mar 2018, 16:26No che non ha senso ... Ti ho già detto cosa devi fare ... ripeto f->figli[xx] = new PERSONA(); prima della strcpy
OoregonSuper FamosoIscritto danov, 2011Messaggi2191709 mar 2018, 16:38Ovviamente se devi scrivere solamente in C devi usare la malloc e non la new
/Anonimizzato22934Utente anonimizzato09 mar 2018, 16:40Grazie mille ora ho capito sto avendo un po' di difficoltà nel capire le strutture unite ai puntatori