Esempio n. 1
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);
}
Esempio n. 2
0
char			*ft_get_word(char *str)
{
	int		len;
	char	*tmp;
	int		i;
	int		j;

	i = -1;
	j = 0;
	len = 0;
	ft_get_len(str, &len);
	tmp = ft_strnew(len + 1);
	while (str[++i] && ((!ft_isspace(str[i])
				|| (ft_isspace(str[i]) && i > 1 && str[i - 1] == '\\'))))
	{
		if (str[i])
		{
			if ((str[i] == '\'' || str[i] == '\"') && (
						i == 0 || (i > 1 && str[i - 1] != '\\')))
				ft_get_quote(str, &i, &j, &tmp);
			else if (i > 0 && str[i - 1] == '\\' && --j >= 0)
				tmp[j++] = str[i];
			else
				tmp[j++] = str[i];
		}
	}
	return (tmp);
}
Esempio n. 3
0
char			*ft_strtrim(const char *s)
{
	size_t		len;
	char		*trim;
	char		*tmp;

	if (!s)
		return (NULL);
	len = ft_get_len(s);
	trim = ft_strnew(len);
	if (trim)
	{
		tmp = trim;
		while (ft_isspace(*s))
			s++;
		while (len--)
			*tmp++ = *s++;
	}
	return (trim);
}
Esempio n. 4
0
int			ft_get_var(char **str, int ret, va_list ap)
{
	t_print	*print;
	size_t	i;

	i = 0;
	if (!(print = (t_print*)ft_memalloc(sizeof(*print))))
		return (-1);
	if ((print->flag = ft_get_flag(*str, &i)) < 0)
		return (ft_free_print(print));
	if ((print->width = ft_get_width(*str, &i, print, ap)) < 0)
		return (ft_free_print(print));
	if ((print->prec = ft_get_prec(*str, &i, print, ap)) < 0)
		return (ft_free_print(print));
	if (!(print->len = ft_get_len(*str, &i)))
		return (ft_free_print(print));
	if (ft_get_type(*str, &i, print) < 0)
		return (ft_free_print(print));
	if (!(print->value = ft_get_value(print, ap, ret)))
		return (ft_free_print(print));
	str[0] += i + 1;
	return (ft_create_str(print, print->flag, print->dot));
}