primo errore che ho trovato e che modifico:
codice:
void gestione(void)
{
     int l;
     printf("Quanti caratteri vuoi inserire? : ");
     scanf("%d",&l);
     char str[l];
     inserimento(l,*str);<----- l'operatore * va tolto
     visualizzazione(l,*str); <----- l'operatore * va tolto
}

Quindi

void gestione(void)
{
     int l;
     printf("Quanti caratteri vuoi inserire? : ");
     scanf("%d",&l);
     char str[l];
     inserimento(l,str);
     visualizzazione(l,str);
}
Adesso ho un problema nell'inserimento nel senso che se metto che voglio inserire 4 caratteri mi dice:
Inserisci il 1° carattere: Inserisci il 2° carattere: <ora posso inserire>
Inserisci il 3° carattere: Inserisci il 4° carattere: <ora posso inserire>
e stampa
--->---><carattere>
--->---><carattere>
Mi fa saltare i primo e il terzo carattere...

Restano questi errori:
In function `inserimento':
[Warning] return makes integer from pointer without a cast