Buongiorno ho problemi con una funzione che crea una struct definita da me:

codice:
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:
codice:
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