Skip to content

2 - Projeto da 42SP. Esse projeto tem o objetivo de criar uma função capaz de ler qualquer arquivo uma linha por vez.

Notifications You must be signed in to change notification settings

gusttavocdn/42_get_next_line

Repository files navigation

GET NEXT LINE - @42SP

Esse projeto é sobre desenvolver uma função que lê um fd linha por linha.

Nota: 125/100 ✔️

Oque é a GNL?

Esse é o segundo projeto do curriculo da 42SP. Consiste em criar uma função que seja capaz de ler de um fd uma linha por vez até o fim.

Oque é um file descriptor?

De forma resumida um fd é uma forma do sistema mapear um arquivo para um ponteiro de memória. Um fd é representado como um inteiro dentro do programa, sendo 3 padrões que são frequentemente usados sendo:

  • 0: stdin
  • 1: stdout
  • 2: stderr

Qualquer arquivo aberto pelo programa pode ser mapeado para um fd. No Linux a quantidade maxima de fds que podem ser abertos por uma programa é de 1024.

Manuseando um fd

A GNL é uma função auxiliar, ela lê uma linha de um fd e retorna a linha lida a cada vez que é chamada. Para ser usada é necessario primeiro que um fd seja aberto e para isso existem funções auxiliares como a open e fopen.

Após o manuseio do arquivo ele precisa ser fechado com funções como a close e fclose.

Como a GNL funciona?

A função GNL utiliza a função read para ler um arquivo a quantidade setada pelo BUFFER_SIZE, o retorno da read é a quantidade de caracteres lidos.

Com esse retorno em mãos a função GNL verifica se existe um '\n' nele (assim que é definido uma linha). Caso tenha sido lido mais bytes do que o necessario para compor uma linha a GNL trata esse retorno separando a linha lida e a parte restante em um buffer estatico para que seja utilizado na proxima chamada da função.

Como utilizar

Baixe o repositorio e execute o seguinte comando no diretorio:

$ make

Sera gerado um arquivo chamado get_next_line.a. Agora você pode utilizar as funções em seus programas compilando da seguinte forma.

$ gcc -Wall -Wextra -Werror get_next_line.a main.c - nomeDoPrograma

Para limpar os arquivo objetos gerados ao compilar a biblioteca só utiliar o comando

$ make clean

About

2 - Projeto da 42SP. Esse projeto tem o objetivo de criar uma função capaz de ler qualquer arquivo uma linha por vez.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages