This project has been created as part of the 42 curriculum by bpavlows
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().
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.
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.cNo 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.
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.