[C] copia elementi con ricorsione

di il
2 risposte

[C] copia elementi con ricorsione

Salve, ho un dubbio sul seguente esercizio:

Scrivere la funzione C void copy(BinSeq* dest, BinSeq* src) che, date in ingresso due sequenze binarie dest e src, copi in modo ricorsivo la sequenza binaria src in dest.

La struttura è questa:
// Struttura per la rappresentazione di una sequenza binaria
typedef struct BinSeq {
  char* data;    // la sequenza binaria è rappresentata come un array di caratteri '0' e '1'
  int dimension; // dimensione dell'array contenente la sequenza binaria, non è la lunghezza della sequenza
} BinSeq; 
Questa è la soluzione che ho pensato:
void copy(BinSeq* dest, BinSeq* src) {
	char* temp=(char*) malloc(sizeof(char)); //variabile ausiliaria
	if ((src->data)!='\0'){ //finché la stringa contiene caratteri
		temp= src->data;
		dest->data = src->data;
		dest->data = temp;
		copy(dest,src);
	}
}
Ma ottengo Segmentation Fault .

Qual'è l'errore? Sbaglio ad accedere alla struttura? Devo allocare spazio in modo diverso?
Grazie

2 Risposte

  • Re: [C] copia elementi con ricorsione

    Ma l'esperienza precedente non ti è servita a niente?
    Consiglio #1: non passare le strutture ma solo la stringa binaria
    Consiglio #2: prima di scrivere anche una sola riga di codice scrivi su carta, in pseudocodice, l'algoritmo.
  • Re: [C] copia elementi con ricorsione

    E poi attenzione a questa scrittura

    (src->data)!='\0'

    che presuppone che il puntatore data non sia NULL (che è cosa DIVERSA dal fatto che non punti a NUL) ... e che è causa di Seg Fault
Devi accedere o registrarti per scrivere nel forum
2 risposte