Skip to content

bpavlows/get_next_line

Repository files navigation

This project has been created as part of the 42 curriculum by bpavlows

GET_NEXT_LINE

Project GNL / Milestone 01 / 42 Porto

📖 Sobre o Projeto

O get_next_line é um projeto da Escola 42 que tem como objetivo criar uma função em C que lê uma linha inteira de um File Descriptor (FD), não importa o tamanho dessa linha ou o tamanho do buffer utilizado para a leitura.

Este projeto introduz conceitos fundamentais da programação em C, tais como:

  • Manipulação detalhada de memória (alocação e libertação para evitar leaks).

  • Uso de Variáveis Estáticas (Static Variables) para preservar dados entre diferentes chamadas da função.

  • Entendimento de File Descriptors e da função read().

🛠️ Como Funciona?

A função get_next_line tem o seguinte protótipo:

char *get_next_line(int fd);

Parâmetro: fd (O File Descriptor do ficheiro que será lido).

Retorno: A linha lida (incluindo o \n, caso exista). Se houver um erro ou o ficheiro acabar (EOF), retorna NULL.

-- O Desafio do BUFFER_SIZE

O programa deve compilar com a flag -D BUFFER_SIZE=n. Isto significa que a função deve ser capaz de ler o ficheiro de n em n bytes. Se o BUFFER_SIZE for 1, 42 ou 9999, a função tem de retornar exatamente a mesma linha, sem falhas.

🚀 Como Compilar e Usar

Para usar esta função no teu projeto, faz clone do repositório e inclui o header.

Compila o teu código junto com os ficheiros do GNL especificando o tamanho do buffer.

cc -Wall -Wextra -Werror -D BUFFER_SIZE=42 main.c get_next_line.c get_next_line_utils.c

No diretório /main tem vários ficheiros com diversas formas para testar.
Além de vários ficheiros no /files4tests para testar abrir e ler.

⭐ Bônus (Opcional)

Neste projeto, também implementei a parte bónus, que adiciona as seguintes capacidades:

Múltiplos File Descriptors: A função consegue ler de vários ficheiros em simultâneo, sem perder a linha de raciocínio de cada um. Posso ler a linha 1 do ficheiro A, depois a linha 1 do ficheiro B, e quando voltar ao ficheiro A, ela lerá a linha 2 corretamente.

Apenas uma Variável Estática: Todo o processamento complexo foi feito utilizando apenas uma única variável estática.

About

Get Next Line da 42

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages