From 9b777b088facde26c33df6c746b948caff725602 Mon Sep 17 00:00:00 2001 From: aqua Date: Fri, 1 Apr 2022 21:46:28 +0300 Subject: printf: add %d, %u and %x --- lib/stdio/printf.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'lib/stdio/printf.c') diff --git a/lib/stdio/printf.c b/lib/stdio/printf.c index f6b8ef6..269b9b6 100644 --- a/lib/stdio/printf.c +++ b/lib/stdio/printf.c @@ -1,8 +1,11 @@ #include #include +#include #include +static char buffer[3 * sizeof(int) + 2]; + int printf(const char *restrict format, ...) { @@ -22,6 +25,15 @@ printf(const char *restrict format, ...) case 's': written += uart_puts(COM1, va_arg(params, const char *), -1); break; + case 'd': + written += uart_puts(COM1, itoa(buffer, va_arg(params, int), 10), -1); + break; + case 'u': + written += uart_puts(COM1, utoa(buffer, va_arg(params, unsigned int), 10), -1); + break; + case 'x': + written += uart_puts(COM1, utoa(buffer, va_arg(params, unsigned int), 16), -1); + break; } l = 0; -- cgit v1.2.1