Sábado 14 de Diciembre de 2024, 12:00
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
[C] sCopy - Ejemplo de manejo de ejecutables
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: [C] sCopy - Ejemplo de manejo de ejecutables (Leído 1286 veces)
The Swash
Nuevo Miembro
Mensajes: 2
Nacionalidad:
[C] sCopy - Ejemplo de manejo de ejecutables
«
en:
Miércoles 29 de Diciembre de 2010, 23:40 »
0
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:
\R
eplace.exe"
,
"C:
\R
aimees.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.
Tweet
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
[C] sCopy - Ejemplo de manejo de ejecutables