wmemcmp Function

Compare wide characters in objects.

Attention: This function is implemented only by MPLAB XC32 C compilers.

Include

<wchar.h>

Prototype

int wmemcmp(const wchar_t * restrict s1, const wchar_t * restrict s2, size_t n);

Arguments

s1
one object to compare
s2
the other object to compare
n
the maximum number of wide characters to compare

Return Value

Returns a positive integer if s1 is greater than s2, zero if s1 is equal to s2 or a negative number if s1 is less than s2.

Remarks

The function returns a value based on the first wide character that differs between s1 and s2 after at most n comparisons. It differs to wcsncmp() in that the comparison continues past terminating null wide characters until all n wide characters have been compared.

Example

#include <wchar.h>

int main(void)
{
  wchar_t buf1[50] = L"Where is the time?";
  wchar_t buf2[50] = L"Where did they go?";
  wchar_t buf3[50] = L"Why?";
  int res;

  wprintf(L"buf1 : %ls\n", buf1);
  wprintf(L"buf2 : %ls\n", buf2);
  wprintf(L"buf3 : %ls\n\n", buf3);

  res = wmemcmp(buf1, buf2, 6);
  if (res < 0)
    wprintf(L"buf1 comes before buf2\n");
  else if (res == 0)
    wprintf(L"6 characters of buf1 and buf2 are equal\n");
  else
   wprintf(L"buf2 comes before buf1\n");
  wprintf(L"\n");

  res = wmemcmp(buf1, buf2, 20);
  if (res < 0)
    wprintf(L"buf1 comes before buf2\n");
  else if (res == 0)
    wprintf(L"20 characters of buf1 and buf2 are equal\n");
  else
    wprintf(L"buf2 comes before buf1\n");
  wprintf(L"\n");

  res = wmemcmp(buf1, buf3, 20);
  if (res < 0)
    wprintf(L"buf1 comes before buf3\n");
  else if (res == 0)
    wprintf(L"20 characters of buf1 and buf3 are equal\n");
  else
    wprintf(L"buf3 comes before buf1\n");
}

Example Output

buf1 : Where is the time?
buf2 : Where did they go?
buf3 : Why?

6 characters of buf1 and buf2 are equal

buf2 comes before buf1

buf1 comes before buf3