我正在尝试自行在C中重现printf函数。已完成%d,s,c,x,X,o,u,目前正在%f上工作。
我需要使用自己的putchar和putnbr函数。我面临的问题是,putnbr只能打印“。”之前的值,但是我还需要打印“。”之后的剩余值。请在下面查看我的代码 感谢您的帮助!
void ft_putchar(char c)
{
write (1, &c, 1);
}
void ft_putnbr(int nb)
{
if (nb < 0)
{
nb = -nb;
}
if (nb >= 10)
{
ft_putnbr(nb / 10);
ft_putnbr(nb % 10);
}
else
ft_putchar(nb + '0');
}
void handle_f(const char *format, va_list list, int i)
{
float number;
number = va_arg(list, double);
if (format[i] == '%' && format[i + 1] == 'f')
{
ft_putnbr(number);
}
}
void ft_printf(const char *format, ...)
{
int i;
va_list list;
i = 0;
va_start(list, format);
while (format[i] != '\0')
{
if (format[i] == '%')
{
if (format[i + 1] == 'f')
{
handle_f(format, list, i);
i = i + 2;
}
i--;
}
else
write(1, &format[i], 1);
i++;
}
va_end(list);
}
int main()
{
float float1 = 10.1011012;
float float2 = 125.1011012;
printf("Printf output:\n");
printf("Hello %f %f\n", float1, float2);
printf("ft_printf output:\n");
ft_printf("Hello %f %f \n", float1, float2);
return (0);
}
Printf输出: 您好10.101101 125.101
ft_printf输出: 你好10125