memcmp, wmemcmp

Porównuje znaki w dwóch buforach.

Składnia

int memcmp(
   const void *buffer1,
   const void *buffer2,
   size_t count
);
int wmemcmp(
   const wchar_t * buffer1,
   const wchar_t * buffer2,
   size_t count
);

Parametry

buffer1
Pierwszy bufor.

buffer2
Drugi bufor.

count
Liczba znaków do porównania. (Porównuje bajty dla memcmp, znaki szerokie dla wmemcmp).

Wartość zwracana

Wartość zwracana wskazuje relację między buforami.

Wartość zwracana Relacja pierwszych count znaków i buf1buf2
< 0 buffer1 mniejsze niż buffer2
0 buffer1 identyczne z buffer2
> 0 buffer1 większe niż buffer2

Uwagi

Porównuje pierwsze count znaki buffer1 i buffer2 zwraca wartość wskazującą ich relację. Znak wartości zwracanej niezerowej jest znakiem różnicy między pierwszą różnicą pary wartości w buforach. Wartości są interpretowane jako unsigned char dla memcmp, i jako wchar_t .wmemcmp

Wymagania

Procedura Wymagany nagłówek
memcmp <memory.h> lub <string.h>
wmemcmp <wchar.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Biblioteki

Wszystkie wersje biblioteki środowiska uruchomieniowego języka C.

Przykład

// 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" );
}
Compare '1234567890123456789' to '1234567890123456789':
First is equal to second.
Compare '1,2' to '1,2':
int_arr1 is equal to int_arr2.

Zobacz też

Manipulowanie buforem
_memccpy
memchr, wmemchr
memcpy, wmemcpy
memset, wmemset
strcmp, wcscmp, _mbscmp
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l