void *memset(void *p, int c, int size) { char ch; char *pp; pp = (char *)p; ch = (char)c; for (int i = 0; i < size; i++) { *pp++ = ch; } return p; } void *memcpy(void *d, void *s, int size) { char *dst = (char *)d; char *src = (char *)s; for (int i = 0; i < size; i++) { *dst = *src; dst++; src++; } return d; } int strcmp(const char *s1, const char *s2) { unsigned int i = 0; int d; while(1) { d = (unsigned char)s1[i] - (unsigned char)s2[i]; if (d != 0 || s1[i] == '\0') return d; i++; } } /* * Copies string pointed by @from to string pointed by @to. * * If count is greater than the length of string in @from, * pads rest of the locations with null. */ char *strncpy(char *to, const char *from, int count) { char *temp = to; while (count) { *temp = *from; /* * Stop updating from if null * terminator is reached. */ if (*from) from++; temp++; count--; } return to; }