diff --git a/include/lib.h b/include/lib.h index b368636..43b95a6 100644 --- a/include/lib.h +++ b/include/lib.h @@ -31,6 +31,18 @@ extern void *memset(void *restrict dest, int c, unsigned long n); */ extern int strncmp(const char *restrict s1, const char *restrict s2, unsigned long n); +/** + * Copys the string pointed to by src , into a string at the buffer pointer to by dest. + * The dest buffer must be long enough to hold src. + */ +extern char *strcpy(char *restrict dest, const char *restrict src); + +/** + * Copys the string pointed to by src , into a string at the buffer pointer to by dest. + * The dest buffer must be long enough to hold src or size n. + */ +extern char *strncpy(char *restrict dest, const char *restrict src, unsigned long n); + /** * @returns 1 if c is a space */ diff --git a/src/lib.c b/src/lib.c index 66bd0c2..1f57f83 100644 --- a/src/lib.c +++ b/src/lib.c @@ -43,6 +43,17 @@ int strncmp(const char *restrict lhs, const char *restrict rhs, unsigned long n) return *l - *r; } +char *strcpy(char *restrict dest, const char *restrict src) { + for(; (*dest = *src); dest++, src++); + return dest; +} + +char *strncpy(char *restrict dest, const char *restrict src, unsigned long n) { + for(; (*dest = *src) && n; dest++, src++, n--); + memset(dest, 0, n); + return dest; +} + int isspace(int c) { switch (c) { case ' ':