Ciao ,

codice:
 
z++;     
accesso db[z];
se dichiari un array di struct , non puoi cambiare dimensione , tra l'altro questo array è locale , non visibile all'esterno della funzione , quindi inutile .

dovresti dichiarare un puntatore struct nel main ,passarlo alla funzione e allocare memoria dinamicamente con realloc() .


altro punto , nella struct è dichiarato un puntatore al char* , che utilizzi come char , o allochi spazio per un byte "cosa insensata" o sostituisci il puntatore con un char .