sábado, 8 de enero de 2022

Uso del fgetc y fgets en C

 fgetc

Esta función lee un caracter a la vez del archivo que esta siendo señalado con el
puntero *archivo. En caso de que la lectura sea exitosa devuelve el caracter leído y en
caso de que no lo sea o de encontrar el final del archivo devuelve EOF.

El prototipo correspondiente de fgetc es:

char fgetc(FILE *archivo);

Esta función se usa generalmente para recorrer archivos de texto. A manera de ejemplo
vamos a suponer que tenemos un archivo de texto llamado "prueba.txt" en el mismo
directorio en que se encuentra el fuente de nuestro programa. Un pequeño programa que
lea ese archivo será:

#include
<stdio.h>
#include <stdlib.h>
int main () {
    FILE *archivo;
    char caracter;

    archivo = fopen("prueba.txt","r");
    if (archivo == NULL) {
        printf("\nError de apertura del archivo. \n\n");
    }
    else{
        printf("\nEl contenido del archivo de prueba es \n\n");
        while((caracter = fgetc(archivo)) != EOF){
            printf("%c",caracter);
            }
        }

fclose(archivo);
return 0;
}

fgets


Esta función está diseñada para leer cadenas de caracteres. Leerá hasta n-1 caracteres o
hasta que lea un cambio de línea '\n' o un final de archivo EOF. En este último caso, el
carácter de cambio de línea '\n' también es leído.

El prototipo correspondiente de fgets es:

char *fgets(char *buffer, int tamaño, FILE *archivo);

El primer parámetro buffer lo hemos llamado así porque es un puntero a un espacio de
memoria del tipo char (podríamos usar un arreglo de char). El segundo parámetro es
tamaño que es el limite en cantidad de caracteres a leer para la funcion fgets. Y por ultimo
el puntero del archivo por supuesto que es la forma en que fgets sabra a que archivo debe
leer.

#include
<stdio.h>
#include <stdlib.h>
int main(){
    FILE *archivo;
    char caracteres[100];

    archivo = fopen("prueba.txt","r");

    if (archivo == NULL){
        exit(1);
    }
    else{
    printf("\nEl contenido del archivo de prueba es \n\n");

    while (feof(archivo) == 0){
        fgets(caracteres,100,archivo);
        printf("%s",caracteres);
        }

    system("PAUSE");
    }

fclose(archivo);
return 0;
}

Este es el mismo ejemplo de antes con la diferencia de que este hace uso de fgets en lugar
de fgetc. La función fgets se comporta de la siguiente manera, leerá del archivo apuntado
por archivo los caracteres que encuentre y a ponerlos en buffer hasta que lea un caracter
menos que la cantidad de caracteres especificada en tamaño o hasta que encuentre el
final de una linea (\n) o hasta que encuentre el final del archivo (EOF). En este ejemplo no

vamos a profundizar mas que para decir que caracteres es un buffer, los pormenores
seran explicados en la sección de manejo dinámico de memoria.
El beneficio de esta función es que se puede obtener una linea completa a la vez. Y resulta
muy útil para algunos fines como la construcción de un parser de algún tipo de
archivo
de texto
.

No hay comentarios:

Publicar un comentario

Uso del fwrite y el fprintf

  fwrite Esta función está pensada para trabajar con registros de longitud constante y forma pareja con fread. Es capaz de escribir hacia un...