Skip to content

Instantly share code, notes, and snippets.

@ljmccarthy
Created October 18, 2025 21:58
Show Gist options
  • Save ljmccarthy/bf072b8ffaa803cdc9d3f8b8c3f049bb to your computer and use it in GitHub Desktop.
Save ljmccarthy/bf072b8ffaa803cdc9d3f8b8c3f049bb to your computer and use it in GitHub Desktop.
C string functions, simple implementation
int memcmp(const void *lhs, const void *rhs, size_t count)
{
const unsigned char *lhs_ptr = lhs;
const unsigned char *rhs_ptr = rhs;
while (count--) {
int diff = (int) *lhs_ptr++ - (int) *rhs_ptr++;
if (diff != 0) {
return diff;
}
}
return 0;
}
void *memcpy(void *dest, const void *src, size_t count)
{
char *dest_ptr = dest;
const char *src_ptr = src;
while (count--) *dest_ptr++ = *src_ptr++;
return dest;
}
void *memset(void *dest, int ch, size_t count)
{
unsigned char value = (unsigned char) ch;
unsigned char *dest_ptr = dest;
while (count--) *dest_ptr++ = value;
return dest;
}
static inline size_t strlen(const char *str)
{
const char *end = str;
while (*end) end++;
return (size_t) (end - str);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment