Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void *memmoveCustom(void *dest, const void *src, size_t n)
- {
- // Converte os ponteiros void pra ponteiros char
- // Assim vc consegue usar aritmética de ponteiro (++, +1) pra andar de byte em byte
- unsigned char *pd = (unsigned char *)dest;
- const unsigned char *ps = (unsigned char *)src;
- // Se src é menor que destino, onde os 2 podem overlap
- if ( ps < pd ) {
- // Inicializa os ponteiros src e dest com a ultima posição a ser copiada
- // dessa forma vc copia em reverso, do ultimo pro primeiro
- pd += n;
- ps += n;
- while (n--) {
- // Enquanto n for > 0, copia cada item, move pro anterior (--) e decrementa o valor de n
- *--pd = *--ps;
- }
- } else
- // Senão simplemente copia um pro outro no sentido normal
- while(n--)
- *pd++ = *ps++;
- return dest;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement