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
unsigned long flen(FILE *f) { unsigned long len, pos; return len; }
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
#include <stdio.h> int main(int argc, char *argv[]) { if(argc < 2) { return 1; } else { FILE *f; while(--argc) { else { else } } } return 0; }
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!