Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: I.Q.H en 26 Febrero 2016, 03:47 am



Título: Como Puedo Copiar Archivo
Publicado por: I.Q.H en 26 Febrero 2016, 03:47 am
Lo que quiero es al ejecutar el programa o el .exe busque el archivo con el nombre señalado en el disco C y lo pegue a un destino ya marcado

Alguien Que Pueda decirme el código para esto porque soy un nobb en c++

POR FAVOR Si no es mucho pedir ;-) ;-)


Título: Re: Como Puedo Copiar Archivo
Publicado por: ivancea96 en 26 Febrero 2016, 08:42 am
3 posibilidades básicas:
-Abrir el archivo para lectura, y el nuevo archivo para escritura, y según lees de un lado, escribes en el otro.
-Utilizar la función system("copy ... ...") para utilizar el comando copy.
-Utilizar la API del sistema operativo.


Título: Re: Como Puedo Copiar Archivo
Publicado por: MAFUS en 26 Febrero 2016, 23:15 pm
Usa la función rename de stdio.h

Su firma es:
Código
  1. int rename(const char *viejo, const char *nuevo);
siendo viejo la cadena con el nombre antiguo del archivo
y nuevo la cadena con el nombre nuevo del archivo.
Retorna 0 si ha tenido éxito y cualquier otro valor, que no sea 0 si falla. En caso de fallo el archivo sigue con el nombre antiguo.

http://c.conclase.net/librerias/?ansifun=rename


Título: Re: Como Puedo Copiar Archivo
Publicado por: BlackM4ster en 27 Febrero 2016, 00:15 am
Usa la función rename de stdio.h

Su firma es:
Código
  1. int rename(const char *viejo, const char *nuevo);
siendo viejo la cadena con el nombre antiguo del archivo
y nuevo la cadena con el nombre nuevo del archivo.
Retorna 0 si ha tenido éxito y cualquier otro valor, que no sea 0 si falla. En caso de fallo el archivo sigue con el nombre antiguo.

http://c.conclase.net/librerias/?ansifun=rename

Rename renombra, no copia. El hecho de que en ciertas circunstancias copie el archivo es un "bug" ya que la implementacion de esta función depende del SO. Es una mala práctica usarlo con este fin.
Citar
If oldname and newname specify different paths and this is supported by the system, the file is moved to the new location.
http://www.cplusplus.com/reference/cstdio/rename/
Me quedo con la respuesta de IvanCea de leer y escribir o usar la API del SO.
Saludos


Título: Re: Como Puedo Copiar Archivo
Publicado por: ThunderCls en 27 Febrero 2016, 01:10 am
-Para Windows te recomiendo usar API's, en este caso: CopyFile/CopyFileEx
-Para usar con ANSI C++ tienes que abrir el fichero, leerlo en memoria y luego escribirlo en el lugar de destino, en este caso podrias usar las funciones: fopen/fread/fwrite/fclose

Saludos


Título: Re: Como Puedo Copiar Archivo
Publicado por: MAFUS en 27 Febrero 2016, 09:01 am
BlackM4sater, tienes razón. Empecé a pensar en el problema, luego pensé en como sería sin tuviera que moverlo a otro sitio y se me fue el santo al cielo.
Usar la API es una muy buena solución pero nada portable, amenoa que se usen las clausulas del preprocesador.


Título: Re: Como Puedo Copiar Archivo
Publicado por: I.Q.H en 28 Febrero 2016, 04:40 am
Entonce Ustedes Me dicen Que usando (API) ???


Título: Re: Como Puedo Copiar Archivo
Publicado por: ivancea96 en 28 Febrero 2016, 13:38 pm
Si vas a usar API, la de Windows sería: https://msdn.microsoft.com/es-es/library/windows/desktop/aa363851%28v=vs.85%29.aspx (https://msdn.microsoft.com/es-es/library/windows/desktop/aa363851%28v=vs.85%29.aspx). Muy simple.

Si lo haces letyendo y escribiendo, que te permite mayor portabilidad, usando ifstream y ofstream es una fácil solución.


Título: Re: Como Puedo Copiar Archivo
Publicado por: I.Q.H en 4 Marzo 2016, 00:05 am
Lo Que en realidad pido es el código del programa   :huh: :huh: :huh: :huh:


Título: Re: Como Puedo Copiar Archivo
Publicado por: engel lex en 4 Marzo 2016, 00:16 am
no se hacen tareas, tema cerrado