Salve! Non mi sembra di aver visto la sezione delle presentazioni quindi nel caso mi scuso in anticipo sto cercando di risolvere un esercizio che prevede l'inserimento da tastiera di linee e la loro concatenazione. Il problema sta quando vado a riallocare temp nel main la seconda volta. Non riesco a capire dove sbaglio. Qualcuno potrebbe illuminarmi?

codice:
#include <stdlib.h>#include <stdio.h>
#include <string.h>


int const DIM=20;


void fillS(char*, int);


int main(int argc, char *argv[]){


    char *str, *temp, c;
    int dim=DIM, dimS;


    str=(char*)malloc(dim*sizeof(char));
    *str='\0';


    temp=(char*)malloc(dim*sizeof(char));


    while(1){


        printf("Vuoi inserire una nuova stringa?");
        if((c=getchar())!='y') break;
        fflush(stdin);


        fillS(temp, dim);
        printf("temp: %s\n", temp);


        dimS+=(strlen(temp)+1);


        str=(char*)realloc(str, dimS*sizeof(char));


        strcat(str, temp);
        printf("str: %s\n", str);


        strcat(str, " ");


    }


    printf("Il risultato e':\n%s\n", str);




}


void fillS(char *str, int dim){


    int i=0;
    char c;


    while((c=getchar())!='\n'){


        if(i==dim){


                str=(char*)realloc(str, (dim+=dim)*sizeof(char));


                printf("controllo\n");






        }


        *(str+i)=c;
        i++;


    }


    *(str+i)='\0';


    str=(char*)realloc(str, (strlen(str)+1)*sizeof(char));


}