Page 330

5.2 Ficheros de texto 2. Se trabaja con ´el leyendo o escribiendo datos, seg´ un el modo de apertura escogido. Al abrir un fichero se dispone un ((cabezal)) de lectura o escritura en un punto definido del fichero (el principio o el final). Cada acci´on de lectura o escritura desplaza el cabezal de izquierda a derecha, es decir, de principio a final del fichero. 3. Se cierra el fichero. Bueno, lo cierto es que, como siempre en C, hay un paso adicional y previo a estos tres: la declaraci´ on de una variable de ((tipo fichero)). La cabecera stdio.h incluye la definici´on de un tipo de datos llamado FILE y declara los prototipos de las funciones de manipulaci´on de ficheros. Nuestra variable de tipo fichero ha de ser un puntero a FILE , es decir, ha de ser de tipo FILE *. Las funciones b´ asicas con las que vamos a trabajar son: fopen: abre un fichero. Recibe la ruta de un fichero (una cadena) y el modo de apertura (otra cadena) y devuelve un objeto de tipo FILE *. FILE * fopen (char ruta[], char modo[]);

Los modos de apertura para ficheros de texto con los que trabajaremos son ´estos: • "r" (lectura): El primer car´acter le´ıdo es el primero del fichero. • "w" (escritura): Trunca el fichero a longitud 0. Si el fichero no existe, se crea. • "a" (adici´ on): Es un modo de escritura que preserva el contenido original del fichero. Los caracteres escritos se a˜ naden al final del fichero. Si el fichero no puede abrirse por cualquier raz´on, fopen devuelve el valor NULL. (Observa que los modos se indican con cadenas, no con caracteres: debes usar comillas dobles.) Modos de apertura para lectura y escritura simult´ anea Los modos "r", "w" y "a" no son los u ´nicos v´ alidos para los ficheros de texto. Puedes usar, adem´ as, ´estos otros: "r+", "w+" y "a+". Todos ellos abren los ficheros en modo de lectura y escritura a la vez. Hay, no obstante, matices que los diferencian: • "r+": No se borra el contenido del fichero, que debe existir previamente. El ((cabezal)) de lectura/escritura se sit´ ua al principio del fichero. • "w+": Si el fichero no existe, se crea, y si existe, se trunca el contenido a longitud cero. El ((cabezal)) de lectura/escritura se sit´ ua al principio del fichero. • "a+": Si el fichero no existe, se crea. El ((cabezal)) de lectura/escritura se sit´ ua al final del fichero. Una cosa es que existan estos m´etodos y otra que te recomendemos su uso. Te lo desaconsejamos. Resulta muy dif´ıcil escribir en medio de un fichero de texto a voluntad sin destruir la informaci´ on previamente existente en ´el, pues cada l´ınea puede ocupar un n´ umero de caracteres diferente.

fclose: cierra un fichero. Recibe el FILE * devuelto por una llamada previa a fopen. int fclose (FILE * fichero);

El valor devuelto por fclose es un c´odigo de error que nos advierte de si hubo un fallo al cerrar el fichero. El valor 0 indica ´exito y el valor EOF (predefinido en stdio.h) indica error. M´ as adelante indicaremos c´ omo obtener informaci´on adicional acerca del error detectado. Cada apertura de un fichero con fopen debe ir acompa˜ nada de una llamada a fclose una vez se ha terminado de trabajar con el fichero. fscanf : lee de un fichero. Recibe un fichero abierto con fopen (un FILE *), una cadena de formato (usando las marcas de formato que ya conoces por scanf ) y las direcciones de memoria en las que debe depositar los valores le´ıdos. La funci´on devuelve el n´ umero de elementos efectivamente le´ıdos (valor que puedes usar para comprobar si la lectura se complet´ o con ´exito). 324

Introducci´ on a la Programaci´ on con C

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement