Chiedo scusa avete ragione ma credetemi sto perdendo la testa con questo programmino.
comunque ho risolto in questo modo
iniziale->stradat=(struct strada **)malloc(sizeof(struct strada* )*6);
     //creare la strada 
     for(i=0;i<5;i++){
     iniziale->stradat[i]=(struct coda *)malloc(sizeof(struct coda));
     printf("inserisci il nome della %d strada",i+1);
     scanf("%d",&iniziale->stradat[i]->nome);
     }
però vorrei capire meglio qual è la differenza dello scrivere cosi
iniziale->stradat=(struct strada **)malloc(sizeof(struct strada* )*5);
e scrivere così
iniziale->stradat=(struct strada *)malloc(sizeof(struct strada)*5);