예제 #1
0
wchar_t	*ft_wstrndup(wchar_t *s1, int n)
{
	wchar_t		*dest;
	int			i;

	i = 0;
	if (ft_wstrlen(s1) >= n)
		dest = ft_wstrnew(n);
	else
		dest = ft_wstrnew(ft_wstrlen(s1));
	while (s1[i] != '\0' && n > 0)
	{
		if (n >= ft_wcharlen(s1[i]))
		{
			dest[i] = s1[i];
			n -= ft_wcharlen(s1[i]);
			i++;
		}
		else
		{
			n = 0;
			dest[i + 1] = '\0';
		}
	}
	return (dest);
}
예제 #2
0
int		ft_wnstrlen(wchar_t *str, int n)
{
	int i;

	i = 0;
	while (*str != '\0' && (i + ft_wcharlen(*str)) <= n)
	{
		i += ft_wcharlen(*str);
		str++;
	}
	return (i);
}
예제 #3
0
static size_t		ft_ret_nwstr(wchar_t *wstr, size_t n)
{
	size_t	i;
	size_t	j;

	i = 0;
	j = 0;
	while (i <= n)
	{
		i += ft_wcharlen(wstr[j]);
		j++;
	}
	i -= ft_wcharlen(wstr[--j]);
	return (i);
}
예제 #4
0
int		ft_print_wchar(va_list *list_args, t_args *arg)
{
	wchar_t		wchar;

	wchar = (wchar_t)va_arg(*list_args, wint_t);
	ft_memset(arg->conv, '\0', 3);
	if (arg->val_field && !arg->val_minus && arg->val_z)
		ft_printnchar(arg->field - ft_wcharlen(wchar), '0');
	if (arg->val_field && !arg->val_minus && !arg->val_z)
		ft_printnchar(arg->field - ft_wcharlen(wchar), ' ');
	ft_putwchar(wchar);
	if (arg->val_field == 1 && arg->val_minus == 1)
		ft_printnchar(arg->field - ft_wcharlen(wchar), ' ');
	return (ft_retfield(arg, ft_wcharlen(wchar)));
}
예제 #5
0
int				ft_wnstrlen(wchar_t *str, int n)
{
	int i;

	i = 0;
	if (*str != '\0')
		i = ft_wcharlen(*str);
	str++;
	while (*str != '\0' && i <= n)
	{
		i += ft_wcharlen(*str);
		if (i > n)
			return (i - ft_wcharlen(*str));
		str++;
	}
	return (i);
}
예제 #6
0
size_t			ft_wstrlen(const wchar_t *ws)
{
	size_t		len;

	len = 0;
	while (*ws)
	{
		len += ft_wcharlen(*ws);
		++ws;
	}
	return (len);
}
예제 #7
0
int		ft_wstrlen(wchar_t *str)
{
	int i;

	i = 0;
	while (*str != '\0')
	{
		i += ft_wcharlen(*str);
		str++;
	}
	return (i);
}
예제 #8
0
size_t		ft_wstrlen(wchar_t *wstr)
{
	size_t		len;
	size_t		i;

	len = 0;
	i = 0;
	while (wstr[i])
	{
		len += ft_wcharlen(wstr[i]);
		i++;
	}
	return (len);
}
예제 #9
0
int		print_wchar(t_opt *opt, va_list *args)
{
	wchar_t c;
	int		size;

	c = va_arg(*args, wint_t);
	size = ft_wcharlen(c);
	print_width_before(opt, opt->min_w - 1);
	ft_putwchar(c);
	print_width_after(opt, opt->min_w - 1);
	if (opt->min_w > 0)
		return (opt->min_w);
	return (size);
}
예제 #10
0
size_t			ft_wstrlen_at_byte(wchar_t *ws, size_t byte)
{
	size_t		ret;
	size_t		len;

	len = 0;
	while (*ws && byte > 0 && byte >= (ret = ft_wcharlen(*ws)))
	{
		byte -= ret;
		len += ret;
		++ws;
	}
	return (len);
}
예제 #11
0
static size_t		ft_putnwstr(wchar_t *wstr, size_t n)
{
	size_t	i;
	size_t	j;

	j = 0;
	i = 0;
	while (i < n)
	{
		i += ft_wcharlen(wstr[j]);
		if (i <= n)
			ft_putwchar(wstr[j]);
		j++;
	}
	return (i);
}
예제 #12
0
static int				ft_pf_len_wstr_cap(const wchar_t *str, int max)
{
	int		len;
	int		tmp;

	len = 0;
	tmp = 0;
	while (*str)
	{
		tmp += ft_wcharlen(*str);
		if (tmp > max)
			return (len);
		len = tmp;
		str++;
	}
	return (len);
}
예제 #13
0
int		*ft_cntwchar(wchar_t **w, int prec)
{
	int i;
	int	size;
	int	*t;
	int	sum;

	i = 0;
	size = ft_wcharlen(*w);
	sum = 0;
	if (!(t = (int*)malloc(sizeof(int) * (size + 1))))
		return (0);
	while ((*w)[i] && (prec >= sum || prec < 0))
	{
		t[i] = ft_cntwint((*w)[i]);
		sum += t[i++];
	}
	if (sum > prec && prec >= 0)
		i--;
	*w = ft_wcharndup(*w, i);
	t[i] = 0;
	return (t);
}