Enrere Mòdul 8
Fonaments de Programació. Llenguatge C/C++---
Pràctica    Resum teòric Exercicis
Pràctica d'ampliació

 
Trobar la mida i la data d'un arxiu

En aquesta pràctica aprendrem un ús interessant de les funcions fseek() i ftell() a més de com es pot obtenir de forma ràpida dades de l'arxiu: data, mida...

 

Desenvolupament de la pràctica

En primer lloc implementarem una funció mida() que ens donarà la mida en octets d'un arxiu de disc. Això es farà amb ajuda de les funcions fseek() i ftell().

Creeu un nou arxiu del tipus C++ anomenat m8p05.cc i escriviu el següent codi:

//m8p05.cc - Trobar la mida d'un arxiu -
#include <stdio.h>

int mida(char *);

int main(int argc, char *argv[]){
   printf("mida de %s:%d\n",argv[1],mida(argv[1]));
   return 0;
}

int mida(char *arxiu){
FILE *f;
   if ((f=fopen(arxiu,"rb"))==NULL){
      printf("error, no s'ha pogut obrir l'arxiu\n");
      return 0;
   }
   fseek(f, 0,SEEK_END);
   return ftell(f);

}
 

Captura de l'execució del programa.

Explicació del programa

La funció main() d'aquest programa rep un argument a través de la línia de comandament. No es fa cap comprovació del nombre d'arguments per tal de facilitar la lectura del codi, no obstant, seria interessant fer-la. Aquest argument serà el nom de l'arxiu, la mida del qual volem saber. La mida es troba a partir de la funció mida(). Aquesta funció té com únic argument el nom de l'arxiu. Aquesta funció s'encarrega d'obrir-lo. A continuació, amb:

fseek(f, 0,SEEK_END);

fa que el punter de posició de lectura de l'arxiu apunti a la darrera posició (0 posicions començant per l'última). Aleshores, la funció ftell() torna la posició d'aquest punter començant pel principi, és a dir, torna la mida de l'arxiu.