Skip to content

Files

Latest commit

Jun 14, 2024
f647a44 · Jun 14, 2024

History

History
81 lines (54 loc) · 2.7 KB

README.md

File metadata and controls

81 lines (54 loc) · 2.7 KB

get_next_line

Build Status


💡 Acerca del Proyecto

El objetivo de este proyecto es implementar una función que devuelva una línea leída desde un descriptor de archivo.

Este proyecto te permitirá entender cómo se abren, leen y cierran archivos en un sistema operativo, y cómo son interpretados por C. Esta tarea es fundamental para cualquier programador, ya que gran parte del tiempo se basa en la manipulación de archivos para la gestión y persistencia de datos. Consiste en codificar una función que devuelve una línea a la vez desde un archivo de texto.

Para obtener información más detallada, consulta el Subject.

🛠️ Uso

Requisitos

La función está escrita en lenguaje C y por lo tanto requiere el compilador gcc y algunas bibliotecas estándar de C para funcionar.

Instrucciones

1. Uso en tu código

Para utilizar la función en tu código, simplemente incluye su encabezado:

#include "get_next_line.h"

y al compilar tu código, agrega los archivos fuente y los FLAGS necesarios:

gcc get_next_line.c get_next_line_utils.c -D BUFFER_SIZE=<tamaño>

📋 Pruebas

Solo necesitas editar el archivo get_next_line.c y descomentar la función main y los encabezados dentro de él. Puedes editar los archivos test.txt para colocar otro texto si deseas probar otros casos. Luego, simplemente ejecuta este comando (cambia "xx" con el tamaño del buffer deseado):

gcc -Wall -Werror -Wextra -D BUFFER_SIZE=xx get_next_line.c get_next_line_utils.c && ./a.out

Ejemplo de main para pruebas

Aquí hay un ejemplo de cómo podría verse tu main en el archivo get_next_line.c para realizar pruebas:

#include "get_next_line.h"
#include <fcntl.h>
#include <stdio.h>

int main(void)
{
    int fd;
    char *line;

    fd = open("test.txt", O_RDONLY);
    if (fd == -1)
        return (1);
    while ((line = get_next_line(fd)) != NULL)
    {
        printf("%s", line);
        free(line);
    }
    close(fd);
    return (0);
}

Notas Finales

  • Asegúrate de manejar correctamente la memoria para evitar fugas.
  • Considera todos los posibles casos borde (archivo vacío, línea muy larga, etc.).
  • Realiza pruebas exhaustivas para asegurarte de que la función se comporta como se espera en todas las situaciones posibles.