strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

Сравнение символов 2 строк, используя текущий языковой стандарт или указанный языковой стандарт.

Важное примечаниеВажно

_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

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

> 0

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

При возникновении ошибки _mbsncmp возвращает _NLSCMPERROR, которая определена в STRING.H и MBSTRING.H.

Заметки

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

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

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

Выходное значение зависеть на параметром параметра категории LC_CTYPE языкового стандарта; дополнительные сведения см. в разделе setlocale.Версии этих функций без суффикса _l используют текущий языковой стандарт для данной функциональности, зависящей от языкового стандарта; версии с суффиксом _l идентичны, за исключением того, что они используют переданный параметр языкового стандарта.Для получения дополнительной информации см. Языковой стандарт.

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

Функция 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