Namespaces
Variants

strncmp

From cppreference.net
< c ‎ | string ‎ | byte
Definido en el encabezado <string.h>
int strncmp ( const char * lhs, const char * rhs, size_t count ) ;

Compara como máximo count caracteres de dos arreglos posiblemente terminados en nulo. La comparación se realiza lexicográficamente. Los caracteres que siguen al carácter nulo no se comparan.

El signo del resultado es el signo de la diferencia entre los valores del primer par de caracteres (ambos interpretados como unsigned char ) que difieren en los arrays que se están comparando.

El comportamiento es indefinido cuando el acceso ocurre más allá del final de cualquiera de los arrays lhs o rhs . El comportamiento es indefinido cuando cualquiera lhs o rhs es el puntero nulo.

Contenidos

Parámetros

lhs, rhs - punteros a los arreglos posiblemente terminados en nulo a comparar
count - número máximo de caracteres a comparar

Valor de retorno

Valor negativo si lhs aparece antes que rhs en orden lexicográfico.

Cero si lhs y rhs son iguales, o si count es cero.

Valor positivo si lhs aparece después de rhs en orden lexicográfico.

Notas

Esta función no es sensible a la configuración regional, a diferencia de strcoll y strxfrm .

Ejemplo

#include <stdio.h>
#include <string.h>
void demo(const char* lhs, const char* rhs, int sz)
{
    const int rc = strncmp(lhs, rhs, sz);
    if (rc < 0)
        printf("First %d chars of [%s] precede [%s]\n", sz, lhs, rhs);
    else if (rc > 0)
        printf("First %d chars of [%s] follow [%s]\n", sz, lhs, rhs);
    else
        printf("First %d chars of [%s] equal [%s]\n", sz, lhs, rhs);
}
int main(void)
{
    const char* string = "Hello World!";
    demo(string, "Hello!", 5);
    demo(string, "Hello", 10);
    demo(string, "Hello there", 10);
    demo("Hello, everybody!" + 12, "Hello, somebody!" + 11, 5);
}

Salida:

First 5 chars of [Hello World!] equal [Hello!]
First 10 chars of [Hello World!] follow [Hello]
First 10 chars of [Hello World!] precede [Hello there]
First 5 chars of [body!] equal [body!]

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.24.4.4 La función strncmp (p: TBD)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.24.4.4 La función strncmp (p: TBD)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.24.4.4 La función strncmp (p: 366)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.21.4.4 La función strncmp (p: 329)
  • Estándar C89/C90 (ISO/IEC 9899:1990):
  • 4.11.4.4 La función strncmp

Véase también

compara dos cadenas
(función)
(C95)
compara una cantidad determinada de caracteres de dos cadenas anchas
(función)
compara dos búferes
(función)
compara dos cadenas de acuerdo con la configuración regional actual
(función)