// copiar.cpp - Copiar un fichero en otro
#include <iostream>
#include <fstream>
using namespace std;

int main(int argc, char *argv[])
{
  fstream fuente, destino;

  try
  {
    // Verificar el número de argumentos
    if ( argc != 3 )
      throw string("Nro. incorrecto de argumentos.\n") +
            string("Formato: copiar fuente destino");
  
    // Abrir el fichero argv[1] para leer
    fuente.open(argv[1], ios::in);
    if (!fuente)
      throw ("No se puede abrir el fichero" + string(argv[1]));
  
    // Abrir el fichero argv[2] para escribir
    destino.open(argv[2], ios::out);    
    if (!destino)
      throw ("No se puede abrir el fichero" + string(argv[2]));
  
    // Copiar el fichero fuente en el fichero destino
    char car;
    while(fuente.get(car))
      destino.put(car);
  
    if (!fuente.eof())
      throw string("Error al leer el fichero");
    else
      cout << "Se ha copiado 1 fichero\n";
  }
  catch(string& s)
  {
    cout << s << endl;
  }

  // Cerrar los ficheros
  fuente.close();
  destino.close();
}

