Ma perche' allochi puntatori a char invece di char ?
Non deve essere
char *stringa = malloc(sizeof(char *));
e
stringa = realloc(stringa, (i + 1) * sizeof(char *));
ma
char *stringa = malloc(sizeof(char));
e
stringa = realloc(stringa, (i + 1) * sizeof(char));
P.S. Usa un titolo piu' significativo ...