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


_memicmp, _memicmp_l

Сравнивает символы в двух буферах (без учета регистра).

Синтаксис

int _memicmp(
   const void *buffer1,
   const void *buffer2,
   size_t count
);
int _memicmp_l(
   const void *buffer1,
   const void *buffer2,
   size_t count,
   _locale_t locale
);

Параметры

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

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

count
Число символов.

locale
Используемый языковой стандарт.

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

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

Возвращаемое значение Отношения между определенным числом начальных байтов буфера 1 и буфера 2
< 0 Значение buffer1 меньше значения buffer2.
0 Значение buffer1 идентично значению buffer2.
> 0 Значение buffer1 больше значения buffer2.
_NLSCMPERROR Произошла ошибка.

Замечания

Функция _memicmp сравнивает первые символы (count) двух буферов buffer1 и buffer2 по байтам. Сравнение не учитывает регистр.

Если какой-либо buffer1 или buffer2 является пустым указателем, эта функция вызывает недопустимый обработчик параметров, как описано в разделе "Проверка параметров". Если выполнение может быть продолжено, функция возвращает _NLSCMPERROR и устанавливает для параметра errno значение EINVAL.

Функция _memicmp использует текущий языковой стандарт для аспектов поведения, обусловленных языковыми стандартами; функция _memicmp_l идентична за исключением того, что она использует переданный языковой стандарт. Дополнительные сведения см. в разделе Locale.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Требования

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

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

Пример

// crt_memicmp.c
// This program uses _memicmp to compare
// the first 29 letters of the strings named first and
// second without regard to the case of the letters.

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

int main( void )
{
   int result;
   char first[] = "Those Who Will Not Learn from History";
   char second[] = "THOSE WHO WILL NOT LEARN FROM their mistakes";
   // Note that the 29th character is right here ^

   printf( "Compare '%.29s' to '%.29s'\n", first, second );
   result = _memicmp( first, second, 29 );
   if( result < 0 )
      printf( "First is less than second.\n" );
   else if( result == 0 )
      printf( "First is equal to second.\n" );
   else if( result > 0 )
      printf( "First is greater than second.\n" );
}
Compare 'Those Who Will Not Learn from' to 'THOSE WHO WILL NOT LEARN FROM'
First is equal to second.

См. также

Манипуляция буфером
_memccpy
memchr, wmemchr
memcmp, wmemcmp
memcpy, wmemcpy
memset, wmemset
_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l