Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Expand Minimize
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here.

memcmp, wmemcmp

Compare characters in two buffers.

int memcmp( 
   const void *buf1, 
   const void *buf2, 
   size_t count 
int wmemcmp( 
   const wchar_t * buf1, 
   const wchar_t * buf2, 
   size_t count 


First buffer.


Second buffer.


Number of characters (bytes for memcmp, wide characters for wmemcmp).

The return value indicates the relationship between the buffers.

Return value

Relationship of first count bytes of buf1 and buf2

< 0

buf1 less than buf2


buf1 identical to buf2

> 0

buf1 greater than buf2

Compares the first count characters of buf1 and buf2 and returns a value indicating their relationship.


Required header


<memory.h> or <string.h>



For additional compatibility information, see Compatibility in the Introduction.


All versions of the C run-time libraries.

// crt_memcmp.c
/* This program uses memcmp to compare
 * the strings named first and second. If the first
 * 19 bytes of the strings are equal, the program
 * considers the strings to be equal.

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

int main( void )
   char first[]  = "12345678901234567890";
   char second[] = "12345678901234567891";
   int int_arr1[] = {1,2,3,4};
   int int_arr2[] = {1,2,3,4};
   int result;

   printf( "Compare '%.19s' to '%.19s':\n", first, second );
   result = memcmp( first, second, 19 );
   if( result < 0 )
      printf( "First is less than second.\n" );
   else if( result == 0 )
      printf( "First is equal to second.\n" );
      printf( "First is greater than second.\n" );

   printf( "Compare '%d,%d' to '%d,%d':\n", int_arr1[0], int_arr1[1], int_arr2[0], int_arr2[1]);
   result = memcmp( int_arr1, int_arr2, sizeof(int) * 2 );
   if( result < 0 )
      printf( "int_arr1 is less than int_arr2.\n" );
   else if( result == 0 )
      printf( "int_arr1 is equal to int_arr2.\n" );
      printf( "int_arr1 is greater than int_arr2.\n" );

Compare '1234567890123456789' to '1234567890123456789':
First is equal to second.
Compare '1,2' to '1,2':
int_arr1 is equal to int_arr2.

Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.

Community Additions

© 2015 Microsoft