wmemmove() — Move wide character

Standards

Standards / Extensions C or C++ Dependencies

ISO C Amendment
C99
Single UNIX Specification, Version 3

both  

Format

Non-XPG4:
#include <wchar.h>

wchar_t *wmemmove(wchar_t *s1, const wchar_t *s2, size_t n);
XPG4:
#define _XOPEN_SOURCE
#define _MSE_PROTOS
#include <wchar.h>

wchar_t *wmemmove(wchar_t *s1, const wchar_t *s2, size_t n);

General description

Copies n wide chars of the object pointed to by s2 to the object pointed to by s1. Copying takes place as if the n wide characters from s2 are first copied into a temporary array of n wide characters that does not overlay the objects pointed to by s1 and s2, and then copied from the temporary array into the object pointed to by s1.

If n has the value 0, wmemmove() copies zero wide characters.

Special behavior for XPG4: If you define any feature test macro specifying XPG4 behavior before the statement in your program source file to include the wchar header, then you must also define the _MSE_PROTOS feature test macro to make the declaration of the wmemmove() function in the wchar header available when you compile your program. Please see Table 1 for a list of XPG4 and other feature test macros.

Returned value

wmemmove() returns the value of s1.

Example

#include <wchar.h>
#include <stdio.h>


main()
  {
   wchar_t  *in    = L"12345678";
   wchar_t  *out   = L"ABCDEFGH";

   wchar_t  *ptr;

   printf("\nExpected result: First 4 chars of in and out the same");
   ptr = wmemmove(in, out, 4);
   if (ptr == in)
        printf("\nArray in %ls array out %ls \n",in, out);
     else
       {
        printf("\n*** ERROR ***");
        printf("  Returned pointer not correct.\n");
       }
  }

Related information