Compartilhar via


strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

Compara até a contagem de caracteres de duas cadeias de caracteres especificada.

Importante

_mbsncmpe _mbsncmp_l não pode ser usado em aplicativos executados no tempo de execução do Windows.Para obter mais informações, consulte Funções de CRT sem suporte com /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 
);

Parâmetros

  • string1, string2
    Cadeias de caracteres a ser comparado.

  • count
    Número de caracteres a ser comparado.

  • locale
    Localidade a usar.

Valor de retorno

O valor de retorno indica a relação de subcadeias de caracteres de string1 e string2 da seguinte maneira.

Valor de retorno

Descrição

< 0

string1subcadeia de caracteres menor que string2 subcadeia de caracteres

0

string1subcadeia de caracteres idêntica à string2 subcadeia de caracteres

> 0

string1subcadeia de caracteres maior que string2 subcadeia de caracteres

Em um erro de validação de parâmetro, _mbsncmp e _mbsncmp_l retornar _NLSCMPERROR, que é definido em < String. h > e < mbstring.h >.

Comentários

O strncmp função executa uma comparação ordinal do primeiro no máximo count caracteres string1 e string2 e retorna um valor que indica a relação entre as subcadeias de caracteres. strncmpé uma versão de maiúsculas e minúsculas do _strnicmp. wcsncmpe _mbsncmp são versões de maiúsculas e minúsculas de _wcsnicmp e _mbsnicmp.

wcsncmpe _mbsncmp são versões de caractere largo e caracteres multibyte strncmp. Os argumentos de wcsncmp são cadeias de caracteres largos; aqueles de _mbsncmp são cadeias de caracteres multibyte. _mbsncmpreconhece sequências de caracteres multibyte de acordo com uma página de código multibyte e retorna _NLSCMPERROR em caso de erro.

Além disso, _mbsncmp e _mbsncmp_l validar parâmetros. Se string1 ou string2 é um ponteiro nulo, o manipulador de parâmetro inválido é chamado, conforme descrito em Validação do parâmetro. Se a execução puder continuar, _mbsncmp e _mbsncmp_l retornar _NLSCMPERROR e defina errno para EINVAL. strncmpe wcsncmp não validam seus parâmetros. Essas funções se comportam de forma idêntica caso contrário.

O comportamento de comparação de _mbsncmp e _mbsncmp_l é afetado pela configuração do LC_CTYPE configuração de categoria da localidade. Isso controla a detecção de bytes à esquerda e à direita de caracteres multibyte. Para obter mais informações, consulte setlocale. O _mbsncmp função usa a localidade atual desse comportamento dependente de localidade. O _mbsncmp_l função é idêntica, exceto que ele usa o locale parâmetro em vez disso. Para obter mais informações, consulte Localidade. Se a localidade é um byte único, o comportamento dessas funções é idêntico ao strncmp.

Mapeamentos da rotina de texto genérico

Rotina TCHAR.H

_UNICODE e _MBCS não definidos

_MBCS definido

_UNICODE definido

_tcsnccmp

strncmp

_mbsncmp

wcsncmp

_tcsncmp

strncmp

_mbsnbcmp

wcsncmp

_tccmp

Mapas de macro ou uma função in-line

_mbsncmp

Mapas de macro ou uma função in-line

não aplicável

não aplicável

_mbsncmp_l

não aplicável

Requisitos

Rotina

Cabeçalho necessário

strncmp

<string.h>

wcsncmp

<string.h> ou <wchar.h>

_mbsncmp, _mbsncmp_l

<mbstring.h>

Para obter informações adicionais sobre compatibilidade, consulte Compatibilidade.

Exemplo

// 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 );
}
  

Equivalência do .NET Framework

System::String::Compare

Consulte também

Referência

Manipulação da cadeia de caracteres (CRT)

Localidade

Interpretação de sequências de caracteres multibyte

_mbsnbcmp, _mbsnbcmp_l

_mbsnbicmp, _mbsnbicmp_l

strcmp, wcscmp, _mbscmp

Funções 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