From 160a8f58137c89edbe29a56a968da273fb7be4ff Mon Sep 17 00:00:00 2001 From: LinlyBoi Date: Tue, 22 Aug 2023 22:11:10 +0300 Subject: [PATCH] itoa is pog --- itoa.c | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/itoa.c | 13 +++++++ 2 files changed, 113 insertions(+) create mode 100644 itoa.c create mode 100644 tests/itoa.c diff --git a/itoa.c b/itoa.c new file mode 100644 index 0000000..97959cf --- /dev/null +++ b/itoa.c @@ -0,0 +1,100 @@ +#include "main.h" +#include +/** + * _str_reverse - reverse a string because I said so + * @str: da string + * Return: number in string form + */ +char *_str_reverse(char *str) +{ + unsigned int i, len; + char *buffer; + + len = _strlen(str); + buffer = malloc(len); + if (!buffer) + return (NULL); + for (i = 0; i < len; i++) + *(buffer + len - 1 - i) = *(str + i); + return (buffer); + + +} +/** + * _itoa - turn NUMBA into a STRING + * @n: NUMBA + * @base: base + * Return: numba in string form + */ +char *_itoa(int n, int base) +{ + int i, isNegative, rem; + char *str; + + str = malloc(1024); + i = isNegative = 0; + if (n == 0) + { + *(str + i++) = '0'; + *(str + i) = '\0'; + return (str); + } + + if (n < 0 && base == 10) + { + isNegative = 1; + n = -n; + } + + while (n != 0) + { + rem = n % base; + *(str + i++) = (rem > 9) ? (rem - 10) + 'a' : rem + '0'; + n = n / base; + } + + if (isNegative) + *(str + i++) = '-'; + + *(str + i) = '\0'; + + str = _str_reverse(str); + + return (str); +} + +/** + * _uitoa - turn NUMBA into a STRING + * @n: NUMBA + * @base: base + * Return: numba in string form + */ +char *_uitoa(unsigned int n, int base) +{ + int i, rem; + char *str; + + str = malloc(1024); + i = 0; + if (n == 0) + { + *(str + i++) = '0'; + *(str + i) = '\0'; + return (str); + } + + + while (n != 0) + { + rem = n % base; + *(str + i++) = (rem > 9) ? (rem - 10) + 'a' : rem + '0'; + n = n / base; + } + + + *(str + i) = '\0'; + + str = _str_reverse(str); + + return (str); +} diff --git a/tests/itoa.c b/tests/itoa.c new file mode 100644 index 0000000..1b6c29e --- /dev/null +++ b/tests/itoa.c @@ -0,0 +1,13 @@ +#include "../main.h" +#define shit 0 +/** + * main - check if this works + */ +int main(void) +{ + char *str; + + str = _itoa(10, 2); + _printf("%s", str); + return (shit); +}