Programación General > C/C++

 [C] sCopy - Ejemplo de manejo de ejecutables

(1/1)

The Swash:

--- Código: C ---#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");       printf("%i",result);       getchar();       }  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;        }    }} 
Les dejo esta función explicada, sencillamente copia un archivo binariamente.
Saludos.

Navegación

[0] Índice de Mensajes

Ir a la versión completa