aboutsummaryrefslogtreecommitdiff
path: root/src/kernel/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/lib')
-rw-r--r--src/kernel/lib/lib.h8
-rw-r--r--src/kernel/lib/string.c22
2 files changed, 29 insertions, 1 deletions
diff --git a/src/kernel/lib/lib.h b/src/kernel/lib/lib.h
index 420dd5b..5cc3d1f 100644
--- a/src/kernel/lib/lib.h
+++ b/src/kernel/lib/lib.h
@@ -33,6 +33,14 @@ void strcat(char *dest, const char *src);
void strcpy(char *dest, const char *src);
/**
+ * Convert an integer to a char array (string)
+ * @param i The integer
+ * @param b The char array
+ * @return The char pointer
+ */
+char *itoa(int i, char b[]);
+
+/**
* Copy n data from src to dest
* @param dest The destination array pointer
* @param src The source array pointer of the data
diff --git a/src/kernel/lib/string.c b/src/kernel/lib/string.c
index c171439..12b4b06 100644
--- a/src/kernel/lib/string.c
+++ b/src/kernel/lib/string.c
@@ -10,7 +10,7 @@ size_t strlen(const char *str) {
size_t strcmp(const char *s1, const char *s2) {
size_t s_a = strlen(s1);
- for (size_t i = 0; i < s_a; i++)
+ for (size_t i = 0; i < s_a; i++)
if (s1[i] != s2[i])
return 1;
return 0;
@@ -30,3 +30,23 @@ void strcpy(char *dest, const char *src) {
for (size_t i = 0; i < s_orig; i++) dest[i] = src[i];
dest[s_orig] = 0;
}
+
+char *itoa(int i, char b[]) {
+ char const digit[] = "0123456789";
+ char *p = b;
+ if (i < 0) {
+ *p++ = '-';
+ i *= -1;
+ }
+ int shifter = i;
+ do {
+ ++p;
+ shifter = shifter / 10;
+ } while (shifter);
+ *p = '\0';
+ do {
+ *--p = digit[i % 10];
+ i = i / 10;
+ } while (i);
+ return b;
+} \ No newline at end of file