RISOLTO

di Anonimizzato22934 il
17 risposte
Ho risolto tutto quanto grazie dell'aiuto

17 Risposte

  • Stai copiando un puntatore, non una stringa! Devi utilizzare strcpy().
  • Mi potresti gentilmente spiegare come funziona non la conosco
  • C'è anche un esempio, questa funzione è una delle funzioni fondamentali della libreria C ... ma in quale libro stai studiando?
  • Ehm non ho un libro di testo (so che devo procurarmene uno al più presto)comunque grazie ora ci provo
  • 
    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ì ?
  • Perchè non mi da errori di compilazioni ma quando richiamo il sottoprogramma l exe smette di funzionare
  • Vedi risposta successiva ...
  • È 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 ?
  • L'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();
  • Una 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);
    }
    
  • Devo per forza copiarmi tutta la struttura f in una nuova struttura che aggiunga un figlio ?
  • No che non ha senso ... Ti ho già detto cosa devi fare ... ripeto

    f->figli[xx] = new PERSONA();

    prima della strcpy
  • Ovviamente se devi scrivere solamente in C devi usare la malloc e non la new
  • Grazie mille ora ho capito sto avendo un po' di difficoltà nel capire le strutture unite ai puntatori
Devi accedere o registrarti per scrivere nel forum
17 risposte