Programación General > C/C++

 fseek

(1/7) > >>

maxstepin:
hola.

fseek(archivo, 0, SEEK_END);
        printf("ntamaño del archivo %lu", (ftell(archivo)));

este codigo me indica el tamaño de un determinado archivo. lo he probado y funciona solo en archivos pequeños. cuando lo pruebo en archivos de 4GB o mas, se imprime 0 como resultado. hay veces que en archivos de 3,5GB si da un resultado, pero es incorrecto.

como podria averiguar el tamaño de archivos de 4GB o mas? hay algun limite para el tamaño de archivo?

saludos. :lol:

m0skit0:
Todo depende del sistema operativo y del sistema de ficheros. Hay sistemas de ficheros que no soportan ficheros de más de 2 GB o más de 4 GB... Esto implica que, aunque ftell() en el estándar POSIX devuelva long, es probable que sistemas que no cumplan el estándar 100% no devuelvan long (o ponga long pero en realidad usen int internamente, es imposible saber sin tener el código fuente del SO).

Eternal Idol:
long es muchas veces 4 bytes.

http://en.wikipedia.org/wiki/Integer_(computer_science)

GetFileSizeEx en Windows.

maxstepin:

--- Cita de: "m0skit0" ---Todo depende del sistema operativo y del sistema de ficheros. Hay sistemas de ficheros que no soportan ficheros de más de 2 GB o más de 4 GB... Esto implica que, aunque ftell() en el estándar POSIX devuelva long, es probable que sistemas que no cumplan el estándar 100% no devuelvan long (o ponga long pero en realidad usen int internamente, es imposible saber sin tener el código fuente del SO).
--- Fin de la cita ---

perdona, no especifique. OS: windows 7 x86, compilador: Mingw32.
sistema de archivos: NTFS, si hay archivos de 8 GB (tranquilamente) en este sistema de ficheros, fseek deberia funcionar correctamente tambien, no? o a lo mejor el problema es ftell?

igual, en mi sistema un long pesa lo mismo que un int (?), no deberia ser de 8 bytes?

la funcion de la API, GetFileSizeEx, solo funcionara en sistemas windows, pero que funcion de libreria estandar me puede ayudar?, ya sabes por lo de la portabilidad.

saludos :comp:

m0skit0:

--- Cita de: "maxstepin" ---la funcion de la API, GetFileSizeEx, solo funcionara en sistemas windows, pero que funcion de libreria estandar me puede ayudar?
--- Fin de la cita ---
Ya te digo que Windows no cumple los estándares, así que si programas para Windows, mejor olvídate de la portabilidad.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa