PDA

Visualizza la versione completa : [C] Problemi funzione-struct


davide356
05-06-2013, 10:00
Buongiorno ho problemi con una funzione che crea una struct definita da me:


int addpercorso(percorso **ps, long s, int n){
printf("%ld id %d numero \n",s,n);
n++;
(*ps)=realloc((*ps),n*sizeof(percorso));
(*ps)[n-1].id=s;
//(*ps)[n-1].n=0;
printf("%ld id %d indice \n", (*ps)[n-1].id, (*ps)[n-1].n);
return 1;
}

Questa la struct:

typedef struct percorso{
long id;
int n;
nodo *nodi;
} percorso;

La riga che commentata con il doppio / non funziona, o meglio il programma parte ma poi dopo qualche istruzione eseguita correttamente d errore. Questa istruzione mi necessaria farla perch quando vado ad aggiungere un "percorso" al mio array con questa funzione, che passato in input con il puntatore **ps, il programma prende da non si s dove un numero e lo assegna al campo n quindi volevo inizializzarlo a 0.

Premetto che questa funzione funzionava correttamente quando nello struct al posto del campo "long id" c'era un campo "char id[20]". Non riesco a capire il motivo per cui ora mi dia questo errore.

Grazie a tutti quelli che risponderanno

oregon
05-06-2013, 10:58
Non ho errori ... Forse il problema che hai sta da qualche altra parte del codice, magari nel main ...

davide356
05-06-2013, 13:07
L'unica volta che accedo a quel campo nel main questo:


int d=percorsi[g].n;

davide356
05-06-2013, 13:09
e poi per aggiungerli 1 che gli ritorna la funzione che ho postato sopra

oregon
05-06-2013, 14:05
Ma hai errori di compilazione? Esecuzione?

davide356
05-06-2013, 14:29
in compilazione nulla, neanche togliendo il commento... in esecuzione invece vedo che mi mette un valore che non dovrebbe esserci nel campo n del percorso su alcuni percorsi non su tutti(questo commentando quell'inizializzazione a 0). Con l'inizializzazione a 0 dopo aver creato il percorso mi funziona per le prime istruzioni poi fa errori e finisce con aborted (core dump)

oregon
05-06-2013, 14:40
Quasi sicuramente il problema nel resto dell'applicazione.

Mostra il main o tutto il codice che possibile compilare e provare per ottenere le tue stesse condizioni d'errore. Con quello che hai mostrato non si pu determinare il problema.

davide356
06-06-2013, 12:28
Per non riesco a spiegarmi il motivo per cui il programma non dia nessun errore con stringhe mentre cambiando tutte le stringhe e le relative funzioni sostituendole con long il programma non funziona pi

oregon
06-06-2013, 12:29
Non posso fare altro che ripetere il mio ultimo post ...

Loading