예제 #1
0
파일: display_opt.c 프로젝트: floklein/42
void	display_count_opt(int *char_nb)
{
	char	*tab;
	int		len;

	tab = NULL;
	tab = int_conv(tab, *char_nb);
	len = ft_strlen(ft_convert_base(tab, "0123456789", "0123456789abcdef"));
	len = 8 - len;
	while (len-- != 0)
		ft_putchar('0');
	ft_putstr(ft_convert_base(tab, "0123456789", "0123456789abcdef"));
	free(tab);
}
static void	read_display(char *file, void (*f)(char))
{
	char	txt;
	char	*tmp;
	int		fd;
	int		i;

	fd = open(file, O_RDONLY);
	while (read(fd, &txt, 1))
	{
		display_add();
		f(txt);
		g_add++;
		if (g_total_size - g_add < 16 && g_add % 16 == 0)
			file_error();
	}
	g_end--;
	if (g_end == 0)
	{
		tmp = ft_convert_base(g_add, BASE, HEX);
		ft_putchar('\n');
		i = g_n - ft_strlen(tmp);
		while (i--)
			ft_putchar('0');
		ft_putstr(tmp);
		ft_putchar('\n');
	}
}
예제 #3
0
파일: display.c 프로젝트: floklein/42
void	display_count_hex(int *char_nb, int *count_valid)
{
	char	*tab;
	int		len;

	tab = NULL;
	tab = int_conv(tab, *char_nb);
	len = ft_strlen(ft_convert_base(tab, "0123456789", "0123456789abcdef"));
	len = 7 - len;
	while (len-- != 0)
		ft_putchar('0');
	ft_putstr(ft_convert_base(tab, "0123456789", "0123456789abcdef"));
	if (count_valid[1] != 0)
		ft_putchar(' ');
	free(tab);
}
예제 #4
0
파일: display.c 프로젝트: floklein/42
void	display_tab_hex(char *str)
{
	int		i;
	char	tab[4];

	i = 0;
	while (str[i] != '\0')
	{
		if (ft_strlen(ft_convert_base(int_to_char(str[i], tab)
		, "0123456789", "0123456789abcdef")) == 1)
			ft_putchar('0');
		ft_putstr(ft_convert_base(int_to_char(str[i], tab)
		, "0123456789", "0123456789abcdef"));
		i++;
		if (str[i] != '\0')
			ft_putchar(' ');
	}
}
static void	display_add(void)
{
	int		i;
	char	*tmp;

	if ((g_add % 16) == 0)
	{
		if (g_add)
			ft_putchar('\n');
		tmp = ft_convert_base(g_add, BASE, HEX);
		i = g_n - ft_strlen(tmp);
		while (i--)
			ft_putchar('0');
		ft_putstr(tmp);
	}
}
예제 #6
0
void		hex_print(char txt)
{
	int		i;
	char	*tmp;

	ft_putstr(" ");
	tmp = ft_convert_base(txt, BASE, HEX);
	i = 2 - ft_strlen(tmp);
	while (i--)
		ft_putchar('0');
	ft_putstr(tmp);
	g_tmp[g_i++] = txt;
	if (g_i == 16)
		g_i = 0;
	if (g_total_size - g_add == 1 && g_end == 1)
		print_after();
}
예제 #7
0
int				ft_atoi_hexa(const char *str)
{
    int		result;
    int		sign;

    sign = 1;
    result = 0;
    if (ft_strlen(str) == 0)
        return (0);
    if ((*str == '-' || *str == '+'))
    {
        (*str == '-') ? sign = -1 : 0;
        str++;
    }
    if (ft_ishexa(*str))
        result = ft_convert_base((char *)str);
    return (result * sign);
}
예제 #8
0
int		ft_action_b(char *f, int lenud, va_list ap)
{
	t_printf		info;
	int				len;
	unsigned int	nbr;
	char			*tmp;

	info.type = 'b';
	init_info(&info, f, lenud, ap);
	if ((nbr = ft_get_value_ou(ap, &info)) == 2)
	{
		nbr = va_arg(ap, unsigned int);
		info.value = ft_zutoa((size_t)nbr);
	}
	tmp = info.value;
	info.value = ft_convert_base(info.value, "0123456789", "01");
	free(tmp);
	len = ft_strlen(info.value);
	info.add = '\0';
	ft_print_d(info, len, nbr, (info.mark && nbr ? "b" : ""));
	free(info.value);
	return (len);
}

int		ft_action_f(char *f, int lenud, va_list ap)
{
	t_printf		info;
	int				len;
	long double		nbr;
	char			*tmp;