From 20dd72e40dc2728d3c5335d860e4b8ab8da14fcc Mon Sep 17 00:00:00 2001 From: Aleksa Vučković Date: Mon, 25 Oct 2021 00:36:33 +0200 Subject: Changing build system to recursive make --- src/c/stdio.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/c/stdio.c (limited to 'src/c/stdio.c') diff --git a/src/c/stdio.c b/src/c/stdio.c new file mode 100644 index 0000000..83d2b0a --- /dev/null +++ b/src/c/stdio.c @@ -0,0 +1,37 @@ +#include"../include/types.h" +#include"../include/string.h" +#include + +void terminal_putchar(char c); +void terminal_writestring(char* data); +void terminal_writeint(uint32_t data); +void terminal_writefloat(double num); + +void printf(char *str, ...) +{ + size_t count=0; + for(size_t i=0;str[i]!='\0';i++) if(str[i]=='%') count++; + + va_list list; + va_start(list, str); + + for(size_t i=0;str[i]!='\0';i++) + { + if(str[i]=='%') + { + i++; + if(str[i]=='c') terminal_putchar((char)va_arg(list,int)); + else if(str[i]=='s') terminal_writestring(va_arg(list,char*)); + else if(str[i]=='d') terminal_writeint(va_arg(list,int)); + else if(str[i]=='f') terminal_writefloat(va_arg(list,double)); + else + { + terminal_writestring("wrong format using print function\n"); + return; + } + } + else terminal_putchar(str[i]); + } + + va_end(list); +} -- cgit v1.2.3