diff --git a/lib/libc/core/string/strcpy.c b/lib/libc/core/string/strcpy.c new file mode 100644 index 0000000..f4cc095 --- /dev/null +++ b/lib/libc/core/string/strcpy.c @@ -0,0 +1,26 @@ +char *strcpy(char *output, const char *input) +{ + unsigned int i; + for (i = 0; input[i] != 0; i++) { + output[i] = input[i]; + } + + output[i] = '\0'; + return output; +} + +char *strncpy(char *output, const char *input, unsigned int count) +{ + unsigned int size = count; + unsigned int i; + for (i = 0; i < size; i++) { + output[i] = input[i]; + + if (input[i] == 0) { + break; + } + } + + output[i] = '\0'; + return output; +} diff --git a/lib/libc/include/string.h b/lib/libc/include/string.h index 3103848..0a8cd0b 100644 --- a/lib/libc/include/string.h +++ b/lib/libc/include/string.h @@ -11,6 +11,9 @@ extern size_t strlen(const char *s); extern int strcmp(const char *s1, const char *s2); extern int strncmp(const char *s1, const char *s2, unsigned long n); +extern int strcpy(const char *s1, const char *s2); +extern int strncpy(const char *s1, const char *s2, unsigned long n); + extern void *memset(void *str, int c, size_t n); extern void *memcpy(void *dst, const void *src, size_t len);