codice:#include <stdio.h> #include <stdlib.h> #define STRING_SIZE 128 #define NUMBER_OF_STRINGS 5 int main(void) { int i, j; char str[STRING_SIZE]; /* è un array di NUMBER_OF_STRINGS puntatori a char ma ogni puntatore in questo momento non punta a niente */ char *array[NUMBER_OF_STRINGS]; for (i=0; i < NUMBER_OF_STRINGS; i++) { if((array[i] = malloc(STRING_SIZE * sizeof(char)) == NULL){ puts("Errore allocazione memoria"); exit(EXIT_FAILURE); } printf("inserisci stringa\n"); scanf("%s", array[i]); /* ok l'elemento i-esimo di array è stato posto uguale a str quindi punta a str. Ma una stringa non si copia così, prima va allocato lo spazio poi vanno usate le funzioni tipo strcpy */ } /* i primi 5 elementi di array puntano alla stessa stringa str */ /* e qundi tutti alla ultima assegnazione */ for (j=0; j < NUMBER_OF_STRINGS; j++) { printf("%d\t%s\n", j, array[j]); free(array[j]); } /* questo ci deve essere sempre */ return 0; }