81 - Archivos de texto: lectura


Vimos en el concepto anterior como crear y grabar datos en un archivo de texto. La visualización de su contenido la hicimos desde un editor de texto.

Ahora veremos como acceder al contenido del archivo desde nuestro programa.

Problema 1:

Abrir el archivo "datos1.txt" en modo lectura, leer todas sus líneas y mostrar su contenido por pantalla.

Archivo: programa232.c

Ver video

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

void main()
{
    FILE *arch=fopen("datos1.txt","rt");
    if (arch==NULL)
        exit(1);
    char caracter = fgetc(arch);
    while (!feof(arch))
    {
        printf("%c",caracter);
        caracter = fgetc(arch);
    }
    fclose(arch);
    getch();
    return 0;
}

La función fgetc procede a leer un caracter del archivo y avanza el puntero. El while se repite mientras no se haya llegado al final de archivo. Dentro del while imprimimos el caracter leido y procedemos a leer el siguiente:

    char caracter = fgetc(arch);
    while (!feof(arch))
    {
        printf("%c",caracter);
        caracter = fgetc(arch);
    }

Hay otra función que nos permite hacer la lectura de un conjunto de caracteres llamada fgets. Resolveremos el mismo problema de impresión completa del archivo utilizando la función fgets:

Archivo: programa233.c

#include<stdio.h>

void main()
{
    FILE *arch=fopen("datos1.txt","rt");
    if (arch==NULL)
        exit(1);
    char linea[100];
    fgets(linea,100,arch);
    while (!feof(arch))
    {
        printf("%s",linea);
        fgets(linea,100,arch);
    }
    fclose(arch);
    getch();
    return 0;
}

La función fgets leer cadenas de caracteres tantos como los indicados en el segundo parámetro menos 1, o hasta que lea un salto de línea '\n' o se llegue al final de archivo.

Dentro de la variable linea también se almacena el salto de línea'\n'.

Problemas propuestos

Ver video

Solución

programa234.c

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

void main()
{
    FILE *arch=fopen("datos1.txt","rt");
    if (arch==NULL)
        exit(1);
    int cant=0;
    char caracter = fgetc(arch);
    while (!feof(arch))
    {
        switch (caracter) {
            case 'a':;
            case 'e':;
            case 'i':;
            case 'o':;
            case 'u':;
            case 'A':;
            case 'E':;
            case 'I':;
            case 'O':;
            case 'U':cant++;
                     break;
        }
        caracter = fgetc(arch);
    }
    fclose(arch);
    printf("La cantidad de vocales almacenadas en el archivo es %i",cant);
    getch();
    return 0;
}




programa235.c

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

void main()
{
    FILE *arch=fopen("datos1.txt","rt");
    if (arch==NULL)
        exit(1);
    int cant=0;
    char caracter = fgetc(arch);
    while (!feof(arch))
    {
        if (caracter=='\n')
            cant++;
        caracter = fgetc(arch);
    }
    fclose(arch);
    printf("La cantidad de lineas del archivo es %i",cant);
    getch();
    return 0;
}

Retornar