Namespaces
Variants

strncmp

From cppreference.net
< c ‎ | string ‎ | byte
Défini dans l'en-tête <string.h>
int strncmp ( const char * lhs, const char * rhs, size_t count ) ;

Compare au maximum count caractères de deux tableaux potentiellement terminés par un caractère nul. La comparaison est effectuée de manière lexicographique. Les caractères suivant le caractère nul ne sont pas comparés.

Le signe du résultat est le signe de la différence entre les valeurs de la première paire de caractères (tous deux interprétés comme unsigned char ) qui diffèrent dans les tableaux comparés.

Le comportement est indéfini lorsque l'accès se produit au-delà de la fin de l'un ou l'autre tableau lhs ou rhs . Le comportement est indéfini lorsque l'un ou l'autre lhs ou rhs est le pointeur nul.

Table des matières

Paramètres

lhs, rhs - pointeurs vers les tableaux potentiellement terminés par un caractère nul à comparer
count - nombre maximum de caractères à comparer

Valeur de retour

Valeur négative si lhs apparaît avant rhs dans l'ordre lexicographique.

Zéro si lhs et rhs sont égaux, ou si count est zéro.

Valeur positive si lhs apparaît après rhs dans l'ordre lexicographique.

Notes

Cette fonction n'est pas sensible aux paramètres régionaux, contrairement à strcoll et strxfrm .

Exemple

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

Sortie :

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!]

Références

  • Norme C23 (ISO/IEC 9899:2024):
  • 7.24.4.4 La fonction strncmp (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.24.4.4 La fonction strncmp (p: TBD)
  • Norme C11 (ISO/IEC 9899:2011) :
  • 7.24.4.4 La fonction strncmp (p: 366)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.21.4.4 La fonction strncmp (p: 329)
  • Norme C89/C90 (ISO/IEC 9899:1990) :
  • 4.11.4.4 La fonction strncmp

Voir aussi

compare deux chaînes de caractères
(fonction)
(C95)
compare un certain nombre de caractères de deux chaînes larges
(fonction)
compare deux tampons
(fonction)
compare deux chaînes conformément aux paramètres régionaux actuels
(fonction)
Documentation C++ pour strncmp