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


strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

Сравнивает символы двух строк вплоть до указанного количества.

Важно!

Функции _mbsncmp и _mbsncmp_l не могут использоваться в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в разделе Функции CRT, которые не поддерживаются с ключом /ZW.

int strncmp(
   const char *string1,
   const char *string2,
   size_t count 
);
int wcsncmp(
   const wchar_t *string1,
   const wchar_t *string2,
   size_t count 
);
int _mbsncmp(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count 
);
int _mbsncmp_l(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count, 
   _locale_t locale
);int _mbsnbcmp(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count 
);

Параметры

  • string1, string2
    Строки для сравнения.

  • count
    Число сравниваемых символов.

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

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

Возвращаемое значение отражает взаимосвязь подстрок string1 и string2, как показано ниже.

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

Описание

< 0

Подстрока string1 меньше, чем подстрока string2.

0

Подстрока string1 идентична подстроке string2.

> 0

Подстрока string1 больше, чем подстрока string2.

При ошибке проверки параметра функции _mbsncmp и _mbsncmp_l возвращают ошибку _NLSCMPERROR, которая определена в <string.h> и <mbstring.h>.

Заметки

Функция strncmp выполняет порядковое сравнение не более чем count первых символов в string1 и string2 и возвращает значение, указывающее отношение между подстроками. strncmp — чувствительная к регистру версия _strnicmp. wcsncmp и _mbsncmp — чувствительные к регистру версии _wcsnicmp и _mbsnicmp.

Функции wcsncmp и _mbsncmp являются версиями функции strncmp для расширенных и многобайтовых символов. Аргументы wcsncmp представляют собой двухбайтовые строки; аргументы _mbsncmp представляют собой многобайтовые строки. _mbsncmp распознает последовательности многобайтовых символов в соответствии с многобайтовой кодовой страницей и возвращает _NLSCMPERROR при ошибке.

Кроме того, функции _mbsncmp и _mbsncmp_l проверяют свои параметры. Если параметр string1 и string2 является указателем NULL, вызывается обработчик недопустимых параметров, как описано в разделе Проверка параметров. Если выполнение может быть продолжено, то функции _mbsncmp и _mbsncmp_l возвращают ошибку _NLSCMPERROR и устанавливают для errno значение EINVAL. Функции strncmp и wcsncmp не проверяют свои параметры. В остальном эти функции ведут себя одинаково.

Способ сравнения _mbsncmp и _mbsncmp_l зависит от настройки категории LC_CTYPE языкового стандарта. Эта категория определяет обнаружение начальных и конечных байтов в многобайтовых символах. Подробнее см. в разделе setlocale. Функция _mbsncmp использует текущий языковой стандарт для данной функциональности, зависящей от языкового стандарта. Функция _mbsncmp_l идентична за исключением того, что она использует вместо этого параметр locale. Для получения дополнительной информации см. Языковой стандарт. Если языковой стандарт является однобайтовым, поведение этих функций идентично поведению strncmp.

Универсальное текстовое сопоставление функций

Подпрограмма TCHAR.H

_UNICODE и _MBCS не определены

_MBCS определено

_UNICODE определено

_tcsnccmp

strncmp

_mbsncmp

wcsncmp

_tcsncmp

strncmp

_mbsnbcmp

wcsncmp

_tccmp

Сопоставляется макросу или встроенной функции

_mbsncmp

Сопоставляется макросу или встроенной функции

Неприменимо

Неприменимо

_mbsncmp_l

Неприменимо

Требования

Подпрограмма

Обязательный заголовок

strncmp

<string.h>

wcsncmp

<string.h> или <wchar.h>

_mbsncmp, _mbsncmp_l

<mbstring.h>

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

Пример

// crt_strncmp.c
#include <string.h>
#include <stdio.h>

char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown fox jumps over the lazy dog";

int main( void )
{
   char tmp[20];
   int result;
   printf( "Compare strings:\n      %s\n      %s\n\n",
           string1, string2 );
   printf( "Function:   strncmp (first 10 characters only)\n" );
   result = strncmp( string1, string2 , 10 );
   if( result > 0 )
      strcpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, sizeof(tmp), "less than" );
   else
      strcpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:      String 1 is %s string 2\n\n", tmp );
   printf( "Function:   strnicmp _strnicmp (first 10 characters only)\n" );
   result = _strnicmp( string1, string2, 10 );
   if( result > 0 )
      strcpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, sizeof(tmp), "less than" );
   else
      strcpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:      String 1 is %s string 2\n", tmp );
}
  

Эквивалент в .NET Framework

System::String::Compare

См. также

Ссылки

Управление строками (CRT)

Языковой стандарт

Интерпретация последовательностей в многобайтной кодировке

_mbsnbcmp, _mbsnbcmp_l

_mbsnbicmp, _mbsnbicmp_l

strcmp, wcscmp, _mbscmp

Функции strcoll

_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l