- #include <stdio.h> 
- #include <stdlib.h> 
-   
- /* @autor The Swash 
-    @thanks psicosis 
- */ 
- int sCopy(char * Source, char * Dest); 
-   
- main(){ 
-        int result; 
-        result = sCopy("C:\Replace.exe","C:\Raimees.exe"); 
-        } 
-   
-   
- int sCopy(char * Source, char * Dest){ 
-     FILE * FSrc; //Puntero al archivo de origen; 
-     FILE * Dst;  //Puntero al archivo de destino; 
-     char * Buffer; //Puntero al Buffer que almacenara la información del archivo origen; 
-     int Size = 0; //Variable que almacenara el tamaño del archivo; 
-     int Readed; //Variable que almacenara la cantidad de bytes leidos; 
-     int Writed; //Variable que almacenara la cantidad de bytes escritos; 
-   
-     FSrc  = fopen(- Source , "rb"); //Abrimos el archivo de origen en modo lectura;
-     Dst  = fopen(- Dest ,"wb"); //Creamos el nuevo archivo;
-   
-     if ((FSrc == NULL) || (Dst == NULL)) //Condición que verifica si alguno de los 2 archivos no se pudo abrir; 
-     { 
-         return -1; //Si no se pudo abrir algo de los 2, retornamos -1 y salimos; 
-     } 
-     else //De lo contrario; 
-     { 
-         while(fgetc(- FSrc ) !=-  EOF ) //Mientras el caracter obtenido sea distinto al final del archivo;
 
-         { 
-             Size++; //Aumentamos en 1 la variable Size, la cual como dijimos almacenara el tamaño del archivo; 
-         } 
-         rewind(- FSrc ); //Volvemos a la posición inicial del archivo para leer desde el principio
 
-         Buffer  = (char *) malloc(- Size  * sizeof(char)); //Generamos un espacio en memoria con el tamaño del archivo;
-         Readed  = fread(- Buffer ,sizeof(char),- Size ,- FSrc ); //Leemos el archivo y el resultado(bytes leidos) se almacenara en Readed;
-         if (Readed = Size) //Si la cantidad de bytes leidos es igual al tamaño del archivo; 
-         { 
-             Writed  = fwrite(- Buffer ,sizeof(char),- Size ,- Dst ); //Escribimos el nuevo archivo y almacenamos la cantidad de bytes escritosen Writed;
-             if (Writed == Size) //Si la cantidad de bytes escritos es igual al tamaño del archivo; 
-             { 
-                 free(- Buffer ); //Liberamos el espacio de memoria ocupado;
 
-                 fclose(- FSrc ); //Cerramos el archivo de origen;
 
-                 fclose(- Dst ); //Cerramos el archivo de destino;
 
-                 return 0; //Retornamos 0 es decir todo se realizó con éxito. 
-             } 
-             else //Si la cantidad de bytes escritos es distitan al tamaño del archivo, es posible que algo aya fallado; 
-             { 
-                 free(- Buffer ); //Liberamos el espacio de memoria ocupado;
 
-                 fclose(- FSrc ); //Cerramos el archivo de origen;
 
-                 fclose(- Dst ); //Cerramos el archivo de destino;
 
-                 return -1; //Retornamos -1 diciendo que algo fallo y no se realizo correctamente; 
-             } 
-         } 
-         else //Si la cantidad de bytes escritos es distitan al tamaño del archivo, es posible que algo aya fallado; 
-         { 
-            free(- Buffer ); //Liberamos el espacio de memoria ocupado;
 
-            fclose(- FSrc ); //Cerramos el archivo de origen;
 
-            fclose(- Dst ); //Cerramos el archivo de destino;
 
-            return -1; //Retornamos -1 diciendo que algo fallo y no se realizo correctamente; 
-         } 
-     } 
- } 
-