memccpy is defined as:
void *memccpy(void *dest, const void *src, int c, size_t n)
I understand that integer c is used as an unsigned char by type casting.
Then I think
void *memccpy(void *dest, const void *src, unsigned char c, size_t n)
looks better. Is there any reason memccpy must use an int parameter?