Ho modificato l'allocazione dinamica in base alle informazioni a mia disposizione nel seguente modo:

codice:
   

char* filename = (char *) malloc (sizeof (char));
char* filenout = (char *) malloc (sizeof (char));     

char* first  = (char *) malloc (sizeof (char));    
char* second = (char *) malloc (sizeof (char));
I problemi descritti in precedenza sono tutt'ora presenti.