[C con Clase] fseek y los tamaños de archivo

Programante programante en gmail.com
Lun Oct 19 21:53:33 CEST 2009


bien1 escribió:
> hola de nuevo.
>
> tengo el siguiente codigo:
>
>         fseek(archivo, 0, SEEK_END);
>         printf("\ntamaño del archivo %lu", (ftell(archivo)));
>
> este codigo funciona bien en archivos pequeños, de hasta 1,5 GB.
> pero lo interesante era ver su comportamiento en archivos de 6 y 7 gigas, en los cuales el final del archivo daba como resultado 0. ftell devuelve como valor de retorno un unsigned long, de 4 bytes, creo que es por eso que un valor superior a 2^32, no sera mostrado o dara error, solo trabaja con archivos menores de 4 gigas.
>
> y por ultimo, lo he probado en un archivo de 3,9 gigas y el resultado ha sido inesperado, salia un valor distinto del que realmente tiene el archivo.
>
> conoceis algun metodo igual de rapido y mas fiable para conocer el tamaño de archivo? que estoy haciendo mal?
>
> saludos y gracias. 
¿Bajo qué sistema operativo?
En Windows usarías GetFileSizeEx(), en Linux lseek() compilando con
offsets de 64 bits.
También puedes usar con el nombre del fichero stati64() que creo que
está disponible tanto
en Linux como en Windows. Es como la función stat() pero con un tamaño
de 64 bits para el tamaño.






Más información sobre la lista de distribución Cconclase