Поделиться через


memcmp, wmemcmp

Сравнивает символы в двух буферах.

Синтаксис

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

Параметры

buffer1
Первый буфер.

buffer2
Второй буфер.

count
Число сравниваемых символов. (Сравнивает байты для memcmp, расширенные символы для wmemcmp.)

Возвращаемое значение

Возвращаемое значение показывает связь между буферами.

Возвращаемое значение Связь первых count символов buf1 и buf2
< 0 buffer1 меньше buffer2
0 buffer1 идентично buffer2
> 0 buffer1 больше buffer2

Замечания

Сравнивает первые count символов в buffer1 и buffer2, возвращая значение, указывающее на соотношение между ними. Знак ненулевого возвращаемого значения соответствует знаку разности между первой отличающейся парой значений в буферах. Значения интерпретируются как unsigned char для memcmp и как wchar_t для wmemcmp.

Требования

Маршрут Обязательный заголовок
memcmp <memory.h> или <string.h>
wmemcmp <wchar.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Библиотеки

Все версии библиотек времени выполнения языка C.

Пример

// 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.

См. также

Манипуляция буфером
_memccpy
memchr, wmemchr
memcpy, wmemcpy
memset, wmemset
strcmp, , wcscmp_mbscmp
strncmp, , wcsncmp_mbsncmp_mbsncmp_l