![]() |
Mòdul
8
![]() |
Fonaments de
Programació. Llenguatge C/C++![]() |
Pràctica ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
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(). Definiu un projecte nou anomenat m8p051 i afegiu-li un arxiu de font C/C++ anomenat m8p051.cpp. Escriviu el següent codi:
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:
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. Això ha estat un exemple d'ús de les funcions fseek() i ftell(), no obstant, no és l'única forma de trobar la mida d'un arxiu. Visual C++ incorpora una estructura i una funció que ens permet trobar propietats d'un arxiu: Definiu un projecte nou anomenat m8p052 i afegiu-li un arxiu de font C/C++ anomenat m8p052.cpp. Escriviu el següent codi:
Explicació del programa Per tal d'obtenir informació d'un arxiu s'ha de fer servir l'estructura _stat i la funció del mateix nom. Les declaracions d'aquesta estructura i funció es troben als arxius capçaleres: sys/types.h i sys/stat.h. Les barres s'han de posar i signifiquen que aquests arxius es troben a la subcarpeta sys de la carpeta on es troben la majoria dels arxius de capçalera. La funció _stat() té dos arguments. El primer és el nom de l'arxiu i el segon, un punter a una estructura de tipus _stat(). En aquest cas, la variable buf s'ha declarat com una variable d'aquesta estructura. Una vegada executada aquesta funció es pot obtenir informació de l'arxiu consultant els diferents camps de l'estructura. El camp size ens dóna la mida de l'arxiu. El camp dev ens dóna el nom del disc on es troba l'arxiu i el camp ctime ens dóna la data i l'hora de creació. Aquest últim camp, és de fet, un punter a una altra estructura. Es pot convertir a una cadena de caràcters amb la funció ctime(), el protocol de la qual es troba a time.h.
|