Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: do-while en 17 Abril 2012, 14:17 pm



Título: ¿ftell da problemas con algunos archivos?
Publicado por: do-while en 17 Abril 2012, 14:17 pm
¡Buenas!

Tratando de leer el tamaño en bytes de unos ficheros iso, me he econtrado con un par de casos en los que obtengo como tamaño incorrecto del fichero 0xFFFFFFFF bytes (lo que es lo mismo (unsigned long) (-1)). Viendo la referencia de cplusplus.com, me dice que cuando hay algun error por parte de ftell, este es el valor devuelto, pero una llamada a perror me dice que no hay ningun error. Los archivos en si son dos imagenes iso de windows 7 (versiones de 32 y 64 bits), descargadas de MSDNAA (una especie de acuerdo entre microsoft e institutos para regalar software). Con el resto de ficheros no tengo ningun problema.

Aqui el primer codigo:
Código
  1. unsigned long flen(FILE *f)
  2. {
  3.    unsigned long len, pos;
  4.  
  5.    pos = ftell(f);
  6.  
  7.    fseek(f,0,SEEK_END);
  8.  
  9.    len = ftell(f);
  10.  
  11.    fseek(f,pos,SEEK_SET);
  12.  
  13.    return len;
  14. }
  15.  

Y aqui otro, para linea de comandos,  que cree por si tenia algun error que no habia visto, pero que me da los mismos resultados:
Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5.    if(argc < 2)
  6.    {
  7.        printf("%s fic1 [fic2 ... ficN]",argv[0]);
  8.        return 1;
  9.    }
  10.    else
  11.    {
  12.        FILE *f;
  13.  
  14.        while(--argc)
  15.        {
  16.            if(!(f = fopen(argv[argc],"rb")))
  17.                fprintf(stderr,"No se puede abrir %s\n",argv[argc]);
  18.            else
  19.            {
  20.                fseek(f,0,SEEK_END);
  21.  
  22.                if(ftell(f) == -1UL)
  23.                    perror(argv[argc]);
  24.                else
  25.                    fprintf(stdout,"%10lu %s\n",ftell(f),argv[argc]);
  26.  
  27.                fclose(f);
  28.            }
  29.        }
  30.    }
  31.  
  32.    return 0;
  33. }
  34.  

Si veis la razon de que me devuelva una longitud falsa, o si sabeis que pasa con este tipo de isos y ftell, avisad, por favor.

¡Saludos!


Título: Re: ¿ftell da problemas con algunos archivos?
Publicado por: x64core en 17 Abril 2012, 18:28 pm
A mi si me funciono flen function : P
el archivo lo tenia en una ruta sin requerimiento de privilegios


Título: Re: ¿ftell da problemas con algunos archivos?
Publicado por: do-while en 18 Abril 2012, 16:58 pm
¡Buenas!

Pues no se que es lo que pasa... El problema solo lo tengo con esos dos ficheros. Aunque los cambie de directorio sigue sucediendome lo mismo. A ver si encuentro algo por ahi y os comento que pasa.

¡Saludos!