Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/12/2004, 10:36
Avatar de ferny
ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
[Lenguaje C] Fallo en programa que hace copias de ficheros

Llevo todo el día pegandome con un error y no le encuentro explicación. Para mostraros el problema me he hecho un programa de prueba que simplemente hace una copia de un fichero. Acá va:


Código PHP:
#include <stdio.h>

int main(void) {
        
FILE *f1,*f2;
        
unsigned long inputsize,i;
        
unsigned char c;
        
        
f1 fopen("Prueba.txt","r");
        
f2 fopen("Prueba.copia.txt","w");

        
/* Tamaño del fichero (esta parte está comprobado que funciona) */
        
fseek(f1,0,SEEK_END);
        
inputsize ftell(f1);
        
fseek(f1,0,SEEK_SET); 
             
        for (
i=0;i<inputsize;i++) {
            
fscanf(f1,"%c",&c);
            
fprintf(f2,"%c",c);
        }

        
printf("Copia realizada\n");
        
system("pause");

        
fclose(f1);
        
fclose(f2);
        return 
0;

El caso es que la copia la hace bien, pero al final del archivo añade caracteres que coinciden con el último caracter del fichero, y me he fijado que añade tantos como lineas tenga el fichero menos una.

Por ejemplo, si el fichero original es éste:


Código:
Linea 1
Linea 2
Linea 3
Linea 4
El fichero "copia" es este otro:


Código:
Linea 1
Linea 2
Linea 3
Linea 4444
Pero lo más desconcertante es que me pasa sólo en Windows, si el mismo programa lo compilo y pruebo en Linux, funciona perfectamente.

En linux estoy usando el compilador GCC y en Windows uso DevC++ que creo que también trae el compilador GCC.

¿Es por algún error en la programación, o es por la mie*** del Windows?
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.