Ho visto che ci sono molti post sugli array di stringhe però nessuno fa al caso mio, dunque ecco il mio problema.

Devo copiare in un array di stringhe , delle stringhe passate in input ; a dirla così sembra facile ma ho qualche problema.

questo è il codice che ho scritto:

codice:
#include <stdio.h>
main() {

	int i, j;
	char str[128]; 
	char *array[128];

	for (i=0; i<5; i++) {
		printf("inserisci stringa\n");
		scanf("%s", str);
		array[i] = str;
	}
	for (j=0; j<5; j++) 
		printf("%d\t%s\n", j, array[j]);
}
immettendo in input le stringhe (in ordine) : "primo", "secondo", "terzo", "quarto", "quinto"
l'output che ottengo è questo:
codice:
0       quinto
1       quinto
2       quinto
3       quinto
4       quinto

ho capito che il problema è nella stringa "di appoggio" str , infatti se creo 5 stringhe di appoggio distinte il problema non si verifica e ottengo proprio quello che volevo, cioè:
codice:
0       primo
1       secondo
2       terzo
3       quarto
4       quinto
purtroppo non posso percorrere questa strada, perchè a priori non so quante sono le stringhe da salvare (in quanto è l'utente dell'applicazione che decide quando fermarsi) e quindi non posso creare un numero che non conosco di variabili.

Come posso risolvere ? Grazie