AnteriorPosterior

6.2. Lectura de un fichero de texto

  Curso: Fundamentos de programación en C, por Nacho Cabanes

6.2. Lectura de un fichero de texto

Si queremos leer de un fichero, los pasos son muy parecidos, sólo que lo abriremos para lectura (el modo de escritura tendrá una “r”, de “read”, en lugar de “w”), y leeremos con “fgets”:

/*---------------------------*/
/*  Ejemplo en C nº 56:      */
/*  C056.C                   */
/*                           */
/*  Lectura de un fichero de */
/*  texto                    */
/*                           */
/*  Curso de C,              */
/*    Nacho Cabanes          */
/*---------------------------*/
 
#include <stdio.h>
 
int main()
{
    FILE* fichero;
    char nombre[80] = "c:\\autoexec.bat";
    char linea[81];
 
    fichero = fopen(nombre, "rt");
 
    if (fichero == NULL)
    {
      printf("No existe el fichero!\n");
      exit(1);
    }
    fgets(linea, 80, fichero);
    puts(linea);
    fclose(fichero);
 
    return 0;
}
 

En este fuente hay un par de cambios:

  • En el nombre del fichero, hemos indicado un nombre algo más complejo. En estos casos, hay que recordar que si aparece alguna barra invertida (\), deberemos duplicarla, porque la barra invertida se usa para indicar ciertos códigos de control. Por ejemplo, \n es el código de avance de línea y \a es un pitido. El modo de lectura en este caso es “r” para indicar que queremos leer (read) del fichero, y “t” avisa de que es un fichero de texto.
  • Para leer del fichero y usaremos “fgets”, que se parece mucho a “gets”, pero podemos limitar la longitud del texto que leemos (en este ejemplo, a 80 caracteres) desde el fichero. Esta cadena de texto conservará los caracteres de avance de línea.
  • Si no se consigue abrir el fichero, se nos devolverá un valor especial llamado NULL (que también veremos con mayor detalle más adelante, cuando hablemos de punteros).
  • La orden “exit” es la que nos permite abandonar el programa en un punto. La veremos con más detalle un poco más adelante.

Actualizado el: 24-07-2014 16:42

AnteriorPosterior