30/03/2008, 19:55
|
| | Fecha de Ingreso: marzo-2008
Mensajes: 22
Antigüedad: 16 años, 8 meses Puntos: 1 | |
Re: El fichero está vacío /*
No es posible obtener el tama¤o de un archivo sin abrirlo.
Lo que se puede hacer es una funci¢n que lo haga pasando como par*metro el nombre del archivo.
Hide dos versiones, te recomiendo la primera, ya que la sengunda hay que especificar si es binario o no.
Espero que sea esto lo que buscabas.
*/
#include <stdio.h>
#include <conio.h>
#include <io.h>
long getfilesize_1(char *filename)
{
int fh;
long size;
fh = open(filename, 0);
if(fh == -1)
size = -1;
else
{
size = filelength(fh); // Obtener el tama¤o de archivo
close(fh);
}
return size; // Retornar el tama¤o
}
long getfilesize_2(char *filename, int binary)
{
FILE *pf;
long old;
long size;
if(binary)
pf = fopen(filename, "b");
else
pf = fopen(filename, "r");
if(pf == NULL)
size = -1;
else
{
old = ftell(pf); // Obtener el cursor actual
fseek(pf, 0, SEEK_END); // Ir al final del archivo
size = ftell(pf); // Obtener el cursor actual (o sea el final del archivo (tama¤o))
fseek(pf, old, SEEK_SET); // Colocar el cursor el la posici¢n original
fclose(pf);
}
return size; // Retornar el tama¤o
}
int main(void)
{
long size;
clrscr();
printf("---------------------- test getfilesize_1 ----------------------\n");
size = getfilesize_1("C:\\texto.txt");
if(size == -1)
printf("No se pudo abrir el archivo\n");
else
printf("El tamano del archivo es %d\n", size);
printf("---------------------- test getfilesize_2 ----------------------\n");
size = getfilesize_2("C:\\texto.txt", 1);
if(size == -1)
printf("No se pudo abrir el archivo\n");
else
printf("El tamano del archivo es %d\n", size);
getch();
} |