Export (0) Print
Expand All
Expand Minimize

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
);

Parameters

buf1
First buffer.
buf2
Second buffer.
count
Number of bytes.

Return Value

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
0 buf1 identical to buf2
> 0 buf1 greater than buf2

Remarks

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

Requirements

Routine Required header Compatibility
memcmp <memory.h> or <string.h> ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP
wmemcmp <wchar.t> ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP

For additional compatibility information, see Compatibility in the Introduction.

Libraries

All versions of the C run-time libraries.

Example

// 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" );
   else
      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" );
   else 
      printf( "int_arr1 is greater than int_arr2.\n" );
}

Output

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

See Also

Buffer Manipulation Routines | _memccpy | memchr | memcpy | memset | strcmp | strncmp | Run-Time Routines and .NET Framework Equivalents

Show:
© 2014 Microsoft