aqui tienes un pequeño ejemplo:
se trata de copiar un fichero en otro, los nombres de estos los pasa como parametros a tu programa.
Código:
// copia.c: Copia de ficheros
// Uso: copia <fichero_origen> <fichero_destino>
#include <stdio.h>
int main(int argc, char **argv) {
FILE *fe, *fs;
unsigned char buffer[2048]; // Buffer de 2 Kbytes
int bytesLeidos;
if(argc != 3) {
printf("Usar: copia <fichero_origen> <fichero_destino>\n");
return 1;
}
// Abrir el fichero de entrada en lectura y binario
fe = fopen(argv[1], "rb");
if(!fe) {
printf("El fichero %s no existe o no puede ser abierto.\n", argv[1]);
return 1;
}
// Crear o sobreescribir el fichero de salida en binario
fs = fopen(argv[2], "wb");
if(!fs) {
printf("El fichero %s no puede ser creado.\n", argv[2]);
fclose(fe);
return 1;
}
// Bucle de copia:
while((bytesLeidos = fread(buffer, 1, 2048, fe)))
fwrite(buffer, 1, bytesLeidos, fs);
// Cerrar ficheros:
fclose(fe);
fclose(fs);
return 0;
}
se estan usando ficheros binarios y el buffer es de tipo, char, en este caso no se necesita de otro tipo.
en caso de que el buffer a leer sea de otro tipo o tal vez sea una estructura.
cambiarias:(por ejemplo)
fwrite(buffer, 1, bytesLeidos, fs);
por
fwrite(buffer, sizeof(int), bytesLeidos, fs);
ó
fwrite(buffer, sizeof(Estructura), bytesLeidos, fs);
tanto en la lectura como en la escritura.
saludos...