E comunque tutte quelle chiamate a getc e putc sono piuttosto lente (anche se, copiando file piccoli, la cosa potrebbe passare inosservata): ti conviene usare la fread e la fwrite con un buffer di qualche KB.