Files
2024-03-31 16:06:11 +00:00

66 lines
1.2 KiB
C
Executable File

#include "types.h"
#include "string.h"
void *memccpy(void *dst, const void *src, int c, size_t count)
{
char *a = dst;
const char *b = src;
while (count--)
{
*a++ = *b;
if (*b == c)
{
return (void *)a;
}
b++;
}
return 0;
}
void memcpy(void *dst, void *src, size_t len)
{
register char *b_dst = dst;
register char *b_src = src;
for (; len; len--)
{
(*b_dst++) = (*b_src++);
}
}
void *memset(void *dst, char s, size_t count)
{
register char *a = dst;
count++; /* this actually creates smaller code than using count-- */
while (--count)
*a++ = s;
return dst;
}
int strcmp(const char *s1, const char *s2)
{
while (*s1 && *s1 == *s2)
s1++, s2++;
return (*s1 - *s2);
}
char *strcpy(register char *s1, register const char *s2)
{
register char *res = s1;
while ((*s1++ = *s2++))
;
return (res);
}
size_t strlen(const char *s)
{
const char *t = s;
unsigned long word;
if (!s)
return 0;
for (; *s++;)
;
return (size_t)(s - t) - 1;
}
char *strncpy(char *dest, const char *src, uint32_t n)
{
memccpy(dest, src, 0, n);
return dest;
}