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
См. также
Ссылки
Интерпретация последовательностей многобайтового символов
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l