/*Scrivere un programma che si pone l'obiettivo di leggere e poi memorizzare una serie distringhe (non si sa quante) di lunghezza variabile, senza occupare memoria oltre quellanecessaria. Il programma acquisisce da input, all'inizio, il numero di stringhe che sivogliono memorizzare (0 se nessuna), e dovrà effettuare poi la memorizzazione solo diquelle richieste. Il programma inoltre, prima di acquisire da input ogni stringa, acquisirà,sempre da input, la lunghezza della stringa che segue, che deve essere comprensiva diterminatore. Se la stringa fornita è più lunga di quanto dichiarato, i caratteri in eccesso nondevono essere memorizzati. Per uscire si digiterà 0 alla richiesta della lunghezza.Linput del programma sarà quindi del tipo:<numero di stringhe><lunghezza della prima stringa><valore della prima stringa><lunghezza ultima stringa><valore ultima stringa>Si chiede di stampare alla fine del programma tutte e sole le stringhe memorizzate,prima di liberare la memoria.Non si può usare la funzione realloc(), né si possono utilizzare variabili conallocazione non fissa, ad esempio:{<leggi n>;char Stringa[n];}Sarà ulteriormente (e di molto) valutata la stesura dello stesso programma senzache si sappia da input il numero di stringhe da memorizzare. In questo, e solo inquesto, caso è ammessa la realloc().*/#include <stdio.h>#include <malloc.h>#include <string.h>int main (){ int i, y, str_len, x, n; char *array, *mychar, c; printf("Quante stringhe vuoi leggere :"); scanf("%d", &i); array=(char *)malloc(sizeof(char *)*i); for (y = 0; y < i; y++) { printf("Inserisci la lunghezza della stringa : "); scanf("%d", &str_len); /* Se la stringa fornita è più lunga di quanto dichiarato, i caratteri in eccesso non devono essere memorizzati. come cazzo faccio? */ x = 0; mychar =(char *)malloc(sizeof(char)*str_len); getchar(); printf("Inserisci la stringa : ", str_len); while ( ((c = getchar()) != '\n' ) && (x < str_len)) { mychar[x] = c; x++; } mychar[x]='\0'; array[y]=malloc(sizeof(char)*str_len); strcpy(&array[y], mychar); } //stampo le stringhe salvate for (y = 0; y < i; y++) printf("La string %d `e : %s", (y+1), array[y]); getch(); return 0;}