Buenas, quiero intentar sustituir un archivo por otro.
He intentado lo siguiente:
FILE * cache = fopen("\\en_US\\champions\\akali.mp3","rb" ); FILE * sonido = fopen("\\es_ES\\champions\\akali.mp3","wb"); fread(&buffer,sizeof(buffer),10000,cache); fwrite(&buffer,sizeof(buffer),10000,sonido); fclose(cache); fclose(sonido);
El caso es que el archivo a sustituir, se me queda a 0 bytes... Alguna idea?
Copiar un archivo
Como dice antonio, puedes usar fseek para saber el tamaño del archivo antes de copiarlo. Además, asegurate que los archivos se abren correctamente:
También mira qué te devuelven las funciones fread/fwrite (en teoría te deberían devolver el número de elementos leidos/escritos). Más que nada para depurar.
Por último, como posible optimización de lo que propone antonioND, en lugar de leer todo el archivo de golpe en un buffer, hazlo poco a poco en un bucle con un buffer más chico, para ahorrar memoria. Sino, si el archivo ocupa 300MB, tu programa ocupará 300 MB en memoria (a lo mejor no tiene sentido que un archivo mp3 ocupe tanto, pero no es raro en un video/película).
Dinos qué te devuleven fopen/fread y fwrite para poder ayudarte mejor.
Saludos!
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Yo siempre uso esta funcion a
Yo siempre uso esta funcion a la hora de copiar archivos
Programo en C, C++, C# y ASM ( Sintaxis INTEL y AT&T )
Proyectos:
- UnlockMii 5.0 ----> UnlockMii 5.1: ( EN CONSTRUCCION -> 2% )
- MiiOS ( EN CONSTRUCCION -> 0,01% )
El mejor antivirus ==> Avast!
Con esto sabes el tamaño del
Con esto sabes el tamaño del archivo:
Haces buffer = malloc(size); y copias todo ahí. Si tienes algún problema, pregunta, pero vamos, no tiene mucho misterio.