2011-09-08 10 views

Respuesta

6

Depende de su plataforma. En el sistema Unix, probablemente pueda usar el tipo off_t. En Windows, es probable que desee utilizar LARGE_INTEGER. Esos son los tipos utilizados en esos sistemas por la función que devuelve el tamaño del archivo (stat en Unix, GetFileSize en Windows).

Si desea un tipo portátil, uint64_t debe ser lo suficientemente grande.

+0

Después de una sesión rápida de Google, parece que uint64_t es lo que quiero. ¡Gracias! Estoy abrumado por la cantidad de respuestas y el tiempo de respuesta. SO es maravilloso! – EnibMoc1994

+1

@ EnibMoc1994: también puede usar 'long long' o su compañero sin firmar, que se garantiza que serán al menos de 64 bits. – caf

1

long long es un favorito Pop :)

1

size_t es la habitual para filesizes en C, pero el tipo de ella es dependiente de la plataforma (32 bits o 64 bits sin signo int en Windows). Sugeriría __int64 (un int de 64 bits) - debería hacer frente a hasta 138,547,332 terrabytes.

EDITAR: Solo haciendo una comprobación, la API de Windows llame al GetFileSizeEx para obtener un LARGE_INTEGER, que es un entero de 64 bits con signo. Así que LARGE_INTEGER sería una buena también.

+2

Para el registro, 'size_t' tiene un tamaño de 64 bits en compilaciones de 64 bits. –

+0

No es un 'unsigned int', es un tipo integral sin signo. – paxdiablo

+0

Disculpas, @paxdiablo, en realidad depende de la plataforma como lo implica. En Windows con 32 bits es equivalente a un int sin firmar. La última vez confié en lo que me dice Visual Studio. :) He editado mi respuesta para ser más preciso. Más información aquí: http://en.wikipedia.org/wiki/Size_t –

2

Hay una función llamada ftello() que devuelve off_t.

Con fgetpos(), necesita una variable fpos_t - EDITAR: que no es necesariamente un tipo aritmético.

Así que off_t podría/debería ser adecuado para sus necesidades, y lo mantiene independiente de los tamaños de tipo de datos reales.

+0

Sólo tenga en cuenta que 'ftello' y' off_t' son Posix, no estándar C. –

+0

Si no tiene 'off_t', tampoco tiene' ftello' y no hay forma (portátil) de agrandar el archivo than 'long' ... –

1

Es posible que desee utilizar el off_t, ya que esto es lo que utilizan las funciones estándar como fseeko y ftello.

1

La libc stat usa off_t, que es un typedef para un tipo sin signo, de 64 bits de ancho. Eso sería adecuado por un tiempo.

+0

off_t es typedef para larga firma en OS X. –

Cuestiones relacionadas