L'input della stringa la fai semplicemente con
printf("Inserire una stringa (con meno di %d caratteri) e al suo termine prememere invio \n", COSTANTEALLOCAMENTO);
stringa str = (stringa)malloc(COSTANTEALLOCAMENTO * sizeof(char));
scanf("%s", str);
return str;
e tutti i controlli che fai non sono corretti e anche inutili.
Per l'allocazione del vettore, sbagli il tipo del sizeof che deve essere stringa e non stringa * oltre al fatto che non ha senso allocare un elemento in più.
Inoltre l'allocazione stessa non ha alcuna necessità di usare una stringa intermedia con relativa copia, quindi
VStr = (stringa*)malloc(dim * sizeof(stringa));
int i = 0;
while (i<dim)
{
VStr[i] = InserireStringa();
printf("la stringa inserita è: %s \n", VStr[i]);
i = i + 1;
}