My_getnextline
Walter Bonetti (bonett_w)
Epitech - Lyon 2016
my_getnextline
My_getnextchar
MY_GETNEXTCHAR
int get_next_char(const int fd)
{
int c;
static int rd;
static char *ptr;
static char buff[READ_SIZE];
if (rd == 0)
{
rd = read(fd, buff, READ_SIZE);
ptr = (char*)&buff;
if (rd == 0)
return (-8500);
}
c = *ptr;
ptr++;
rd--;
return (c);
}Cas particulier
Cas standard
READ_SIZE
~ read(1) sur un buffer
My_getNEXTLINE
Ou comment S’ARRÊTER devant un mur
char *get_next_line(const int fd)
{
int c;
size_t cursor;
char *line;
cursor = 0;
if ((line = malloc(sizeof(char) * (BUFFER_SIZE + 1))) == NULL)
return (NULL);
while ((c = get_next_char(fd)) != '\n')
{
if (c == -8500)
return ((cursor) ? line : NULL);
line[cursor++] = c;
if (cursor % (BUFFER_SIZE + 1) == 0)
if ((line = my_realloc(line, cursor + BUFFER_SIZE + 1)) == NULL)
return (NULL);
}
line[cursor] = '\0';
return (line);
}My_get_NEXT_CONTENT_WALL
Quit à prendre un mur autant choisir le bon !
char *get_next_content_wall(const int fd, char wall)
{
int c;
size_t cursor;
char *line;
cursor = 0;
if ((line = malloc(sizeof(char) * (BUFFER_SIZE + 1))) == NULL)
return (NULL);
while ((c = get_next_char(fd)) != wall)
{
if (c == -8500)
return ((cursor) ? line : NULL);
line[cursor++] = c;
if (cursor % (BUFFER_SIZE + 1) == 0)
if ((line = my_realloc(line, cursor + BUFFER_SIZE + 1)) == NULL)
return (NULL);
}
line[cursor] = '\0';
return (line);
}Thank
FOR
WATCHING
deck
By bonett_w
deck
- 490