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