示例#1
0
void			ft_catnbr(char **s, int n, t_print *print)
{
	char			*tmp;
	int				i;
	char			*nbr;

	if (print->precision == -1 && !n)
	{
		nbr = ft_strneww(0);
		if (print->sign)
			ft_strjoinn(&nbr, '+');
		ft_strjoinnstringlen(s, nbr, print);
		free(nbr);
		return ;
	}
	tmp = ft_strneww(0);
	ft_catnb(&tmp, n, print);
	i = ft_strlenn(tmp);
	if (i <= print->precision)
		ft_func1(&tmp, 0, print, i);
	else
		print->precision = 0;
	i = ft_strlenn(tmp);
	ft_func2(&tmp, 0, print, i);
	ft_strjoinnstringlen(s, tmp, print);
	free(tmp);
}
示例#2
0
文件: ft_put_base.c 项目: Derzouli/42
void	ft_put_base(unsigned int n, char *base)
{
	if (n < ft_strlenn(base))
		ft_putchar(base[n]);
	else
	{
		ft_put_base(n / ft_strlenn(base), base);
		ft_putchar(base[n % ft_strlenn(base)]);
	}
}
示例#3
0
文件: ft_toa.c 项目: Derzouli/42
static char				*ft_toa_next(unsigned int n, char *s, int i, char *base)
{
	int				j;

	i++;
	j = i;
	while (i > 0)
	{
		*(s + i - 1) = base[n % ft_strlenn(base)];
		n = n / ft_strlenn(base);
		i--;
	}
	*(s + j) = '\0';
	return (s);
}
示例#4
0
void			ft_catunbr(char **s, unsigned int n, t_print *print)
{
	char			*tmp;
	int				i;

	if (print->precision == -1 && !n)
	{
		if (print->width)
			ft_strjoinnstringlen(s, "", print);
		return ;
	}
	tmp = ft_strneww(0);
	ft_catunb(&tmp, n, print);
	i = ft_strlenn(tmp);
	if (i <= print->precision)
		ft_func1(&tmp, 0, print, i);
	else
		print->precision = 0;
	i = ft_strlenn(tmp);
	ft_func2(&tmp, 0, print, i);
	ft_strjoinnstringlen(s, tmp, print);
	free(tmp);
}
示例#5
0
文件: ft_toa.c 项目: Derzouli/42
char					*ft_toa(unsigned int n, char *base)
{
	char			*s;
	int				i;
	unsigned int	k;

	i = 0;
	k = n;
	s = (char *)malloc(sizeof(*s) * 120);
	if (s == NULL)
		return (NULL);
	if (n == 0)
	{
		*s = '0';
		*(s + 1) = '\0';
		return (s);
	}
	while (k > ft_strlenn(base))
	{
		i++;
		k = k / ft_strlenn(base);
	}
	return (ft_toa_next(n, s, i++, base));
}
示例#6
0
void			ft_strjoinnstringlen(char **s1, char *s2, t_print *print)
{
	register int	i;

	i = ft_strlenn(s2);
	if (i == -1)
	{
		ft_strjoinnstringlen(s1, "(null)", print);
		return ;
	}
	if (i < print->width && !(print->leftalign))
	{
		ft_func1(s1, s2, print, i);
	}
	else if (i < print->width)
	{
		ft_func2(s1, s2, print, i);
	}
	else
	{
		ft_func3(s1, s2, print, i);
	}
}