Page 359

CC 2003, 2008 Andr´ es Marzal e Isabel Gracia

5 Ficheros

for (i=tam-1; i>=0; i--) { fseek (fp, i * MAXLON , SEEK_SET); fread (palabra, sizeof (char), MAXLON , fp); printf ("%s\n", palabra); } fclose(fp);

16 17 18 19 20 21 22

return 0;

23 24

}

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . · 335 Los dos programas anteriores pueden plantear problemas cuando trabajan con palabras que tienen 80 caracteres m´ as el terminador. ¿Qu´e problemas? ¿C´omo los solucionar´ıas? · 336 Dise˜ na un programa que lea una serie de valores enteros y los vaya escribiendo en un fichero hasta que el usuario introduzca el valor −1 (que no se escribir´a en el fichero). Tu programa debe, a continuaci´ on, determinar si la secuencia de n´ umeros introducida en el fichero es pal´ındroma. · 337 Deseamos gestionar una colecci´on de c´omics. De cada c´omic anotamos los siguientes datos: Superh´eroe: una cadena de hasta 20 caracteres. T´ıtulo: una cadena de hasta 200 caracteres. N´ umero: un entero. A˜ no: un entero. Editorial: una cadena de hasta 30 caracteres. Sinopsis: una cadena de hasta 1000 caracteres. El programa permitir´ a: 1. Dar de alta un c´ omic. 2. Consultar la ficha completa de un c´omic dado el superh´eroe y el n´ umero del episodio. 3. Ver un listado por superh´eroe que muestre el t´ıtulo de todas sus historias. 4. Ver un listado por a˜ no que muestre el superh´erore y t´ıtulo de todas sus historias. Dise˜ na un programa que gestione la base de datos teniendo en cuenta que no queremos cargarla en memoria cada vez que ejecutamos el programa, sino gestionarla directamente sobre disco. .............................................................................................

5.4.

Errores

Algunas de las operaciones con ficheros pueden resultar fallidas (apertura de un fichero cuya ruta no apunta a ning´ un fichero existente, cierre de un fichero ya cerrado, etc.). Cuando as´ı ocurre, la funci´ on llamada devuelve un valor que indica que se cometi´o un error, pero ese valor s´olo no aporta informaci´ on que nos permita conocer el error cometido. La informaci´ on adicional est´ a codificada en una variable especial: errno (declarada en errno.h). Puedes comparar su valor con el de las constantes predefinidas en errno.h para averiguar qu´e error concreto se ha cometido: EACCESS: permiso denegado, EEXIST: el fichero no existe, EMFILE: demasiados ficheros abiertos, ... Introducci´ on a la Programaci´ on con C

353

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement