memmove()

Updated: April 19, 2023

Copy bytes from one buffer to another, handling overlapping memory correctly

Synopsis:

#include <string.h>

void* memmove( void* dst,
               const void* src,
               size_t length );

Arguments:

dest
A pointer to where you want the function to copy the data.
src
A pointer to the buffer that you want to copy data from.
length
The number of bytes to copy.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The memmove() function copies length bytes from the buffer pointed to by src to the buffer pointed to by dst. Copying of overlapping regions is handled safely. Use memcpy() for greater speed when copying buffers that don't overlap.

Returns:

A pointer to the destination buffer (that is, the value of dst).

Examples:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main( void )
{
    char buffer[80];

    strcpy( buffer, "World");
    memmove( buffer+1, buffer, 79 );
    printf ("%s\n", buffer);
    
    return EXIT_SUCCESS;
}

produces the output:

WWorld

Classification:

ANSI, POSIX 1003.1

Safety:  
Cancellation point No
Interrupt handler Yes
Signal handler Yes
Thread Yes