Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    152

    [C] problemi con copia albero

    Questo codice mi da errore in compilazione nella riga dove richiamo ricorsivamente il sottoprogramma ( Cannot convert int** to int* for argument 3 ). Come mai ? Come devo risolvere ?

    codice:
    void copia_abr_tostring(nodo *root,char **vet,int *i){
         if(root!=NULL){
                 if(root->sx!=NULL)
                        copia_abr_tostring(root,vet,&i);
                 *(vet+i)=(char *)malloc((strlen(root->stringa)+1)*sizeof(char));
                 strcpy(*(vet+i),root->stringa);
                 if(root->dx!=NULL)
                        copia_abr_tostring(root,vet,&i);
         }
    return;
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Prova a levare la &

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    152
    E poi come passo il valore della i corrente ?

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    i è già un puntatore a int, con quell'& ottieni un puntatore a un puntatore a int...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    esatto..

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    152
    Avete ragione per quanto riguarda la i, mia distrazione

    Però continua a darmi un errore :
    Allora nel principale ho questo :

    codice:
    n=conta_nodi(root);
    vet=(char **)malloc(n*sizeof(char *));
    copia_abr_tostring(root,vet,&i);
    E questa è la funzione :

    codice:
    void copia_abr_tostring(nodo *root,char **vet,int *i){
         if(root!=NULL){
                 if(root->sx!=NULL)
                        copia_abr_tostring(root,vet,i);
                 /*204*/ *(vet+i)=(char *)malloc((strlen(root->stringa)+1)*sizeof(char));
                 strcpy(*(vet+i),root->stringa);
                 if(root->dx!=NULL)
                        copia_abr_tostring(root,vet,i);
         }
    return;
    }
    E continua a darmi quest'errore :

    204 invalid operands of types `char**' and `int*' to binary `operator+'

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    59
    Prima di rispondere ti consiglio di postare l'intero codice la prossima volta così è più facile capire, per chi ti vuole aiutare, dov'è l'errore...

    Comunque non mi metto a discutere di tutte le parti del codice, ma l'errore che ti sta segnalando è abbastanza chiaro, tu passi alla funzione i che è un puntatore ad int quando scrivi cose del tipo:

    codice:
    *(vet+i)=(char *)malloc((strlen(root->stringa)+1)*sizeof(char));
    ti devi ricordare che per accedere al valore puntato da i devi usare l'operatore *...

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    152
    Hai ragione, grazie! Adesso non ci sono errori in compilazione, ma in esecuzione mi da segmentation fault

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.