Пример #1
0
int			get_next_line(int const fd, char **line)
{
	static char	*buffer = NULL;
	char		*temp;
	int			i;
	int			c;

	if (line == 0)
		return (-1);
	c = 42;
	temp = ft_strnew(BUFF_SIZE);
	while (ft_good_guy_strchr(buffer, '\n') == 0 && c != 0)
	{
		if ((c = read(fd, temp, BUFF_SIZE)) < 0)
			return (ft_neg(buffer, temp, -1));
		buffer = ft_strrealloc(buffer, BUFF_SIZE);
		ft_strcat(buffer, temp);
	}
	free(temp);
	i = ft_search(buffer);
	if (*buffer == 0)
		return (ft_neg(buffer, 0, 0));
	*line = ft_strsub(buffer, 0, i);
	temp = ft_strsub(buffer, i + 1, ft_strlen(buffer + i + 1));
	free(buffer);
	buffer = temp;
	return (1);
}
Пример #2
0
char		*ft_itoa_base(intmax_t n, int base)
{
	int		i;
	int		len;
	int		neg;
	char	*str;
	char	*cmp;

	cmp = init(&neg, &i);
	len = ft_get_len(n, base);
	is_neg(&neg, &n);
	if (n == 0)
		return (ft_strdup("0"));
	if (neg && !(str = (char *)malloc(sizeof(char) * (len + 1))))
		return (NULL);
	else
		return (ft_neg(n, base, len));
	str[len + 1] = 0;
	while (len + 1)
	{
		str[len] = cmp[n % base];
		n = n / base;
		len--;
	}
	if (str[0] == '0')
		str = ft_strsub(str, 1, ft_strlen(str) - 1);
	return (str);
}
Пример #3
0
int			ft_is_sort(int *tab, int length, int (*f)(int, int))
{
	int		i;

	i = 0;
	while (i < length - 1)
	{
		if (f(tab[i], tab[i + 1]) < 0)
		{
			i++;
			return (ft_pos(tab, length, i, f));
		}
		else
		{
			if (f(tab[i], tab[i + 1]) > 0)
			{
				i++;
				return (ft_neg(tab, length, i, f));
			}
			i++;
		}
	}
	return (1);
}