diff --git a/main.h b/main.h index 1649623..f24843b 100644 --- a/main.h +++ b/main.h @@ -10,5 +10,8 @@ int _puts(char *str); int _putchar(char c); char *_memset(char *adr, int bval); int fmt(char c, va_list args); +char *_str_reverse(char *str); +char *_itoa(int n, int base); +char *_uitoa(unsigned int n, int base); #endif diff --git a/printf.c b/printf.c index 3f098aa..7f4ee74 100644 --- a/printf.c +++ b/printf.c @@ -43,7 +43,7 @@ int _printf(const char *format, ...) } if (buffer) { - _puts(buffer); + printed += _puts(buffer); free(buffer); } return (printed); @@ -64,6 +64,12 @@ int fmt(char c, va_list args) return (_putchar(va_arg(args, int))); case '%': /*add 1 byte*/ return (_putchar('%')); + case 'd': + return (_puts(_itoa(va_arg(args, int), 10))); + case 'i': + return (_puts(_itoa(va_arg(args, int), 10))); + case 'b': + return (_puts(_itoa(va_arg(args, int), 2))); default: _putchar('%'); /* TODO make this cleaner */ _putchar(c); diff --git a/tests/num_test.c b/tests/num_test.c new file mode 100644 index 0000000..31ceb88 --- /dev/null +++ b/tests/num_test.c @@ -0,0 +1,12 @@ +#include "../main.h" +#define shit 0 +#define fr ; +/** + * main - no cap fr %d + * + */ +int main(void) +{ + _printf("the number is: %d\n", 10)fr + return (shit)fr +}