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

Programante programante en gmail.com
Dom Oct 25 16:59:23 CET 2009


bien1 escribió:
> #define __MSVCRT_VERSION__ 0x0601
> #include <stdio.h>
> #include <sys/stat.h> /* Para la estructura stat */
> #include <unistd.h>
>
> main(int argc, char **argv)
> {
> 	struct __stat64 buf;
>
> 	printf("%s\n",argv[1]);
>
> 	if ( _stat64(argv[1], &buf) == -1 )
> 	{
> 		perror(argv[1]);
> 		getchar();
> 		exit(-1);
> 	}
> 	else
> 	{
> 		printf("Tamaño del archivo %s %d bytes.\n",argv[1],buf.st_size);
> 	}
> 	getchar();
> }
>
> compila, pero en el momento de ejecutar en archvios de 7 GB hay desbordamiento de memoria y da numeros negativos como resultado.
>
> bajo windows 7 x86, mingw y codebloks
En un __stat64 el campo st_size es de 64 bits, por lo que no puedes
representarlo con un %d. Usa %I64d (o %I64u).







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