Averiguando el tamaño de un archivo en C

4 07 2008

El otro dia estaba haciendo un programa de broma (Aunque bastante… digamos, desagradable) que llenaba un archivo de texto a base espacios (jj) pero necesitaba una forma de controlarlo y se me ocurrio hacer otro programa que comprobara el tamaño del archivo para no excederme. El programa no utiliza ninguna libreria de sistema o llamada a sistema por lo que pienso que es portable, de todos modos, si encuentran que no es portable en algun SO, me envian un mail, solo utilizo un puntero FILE y lo basico en abrir archivos. El codigo lo dejo aqui: (Es corto)

#include <stdio.h>
    int main( int argc, char *argv[] ) {
    FILE *archivo;
    int contador = 1;
    char recorrer=0;
    unsigned long int size=0;
    if ( argc < 2 ) {
         printf("Uso: file archivo1\n   file archivo1 archivo2\n");
         getchar();
         return 1;
         }
    while( contador < argc ) {
          archivo=fopen( argv[contador], "rb" );
          if (archivo==NULL){
                             printf("Archivo invalido");
                             return 1;
                             }
          while( feof(archivo)==0 ) {
                 size +=1;
                 recorrer=getc(archivo);
                 }
          fclose( archivo );
          printf("El archivo %s tiene  %f MB\n", argv[contador], (float)size/1000000); /*Eliminar si quieren*/
          contador+=1;
          size=0;
          archivo=NULL;
          }
    return 0; /*Si quieren utilizarlo con los mismos fines que yo, entonces en vez de cero pongan size/1000000*/
}

Acciones

Información

Un comentario

26 09 2009
Interbyers

No es necesario recorrerlo para tener el tamaño:

fopen(….
fseek(archivo, 0, SEEK_END); // Se posiciona al final del archivo
tamanio = ftell(archivo); // Devuelve la posición actual del archivo (en bytes)
fclose(…
printf(“Tamaño: %d\n”, tamanio);

Deja un comentario