Ma quali correzioni ?

Mi sembra che avevi problemi nell'allocazione dello spazio delle stringhe ...

... e li hai ancora ...

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

char* first  = malloc( sizeof(char*));    
char* second = malloc( sizeof(char*));