1) Io inserirei un controllo su argc per verificare se siano stati passati DUE parametri da linea di comando
2) Perché usi un buffer se poi leggi e scrivi un carattere alla volta?
3) Aumenta la dimensione del buffer a 4096, elimina i due cicli while e sostituiscili con questo
Così dovrebbe funzionare (meglio).codice:while ((dim = fread(buffer, sizeof(char), sizeof(buffer), fs)) > 0) { fwrite(buffer, sizeof(char), dim, fs2); }