Provided by: manpages-fr-dev_4.21.0-2_all bug

NOM

       strcmp, strncmp - Comparer deux chaînes

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <string.h>

       int strcmp(const char *s1, const char *s2);
       int strncmp(const char s1[.n], const char s2[.n], size_t n);

DESCRIPTION

       La  fonction  strcmp()  compare  les deux chaînes s1 et s2. La locale n'est pas prise en compte (pour une
       comparaison basée sur la locale, consultez strcoll(3)). La comparaison est effectuée sur  des  caractères
       non signés.

       strcmp() retourne un entier indiquant le résultat de la comparaison comme suit :

       -  0 si s1 et s2 sont égales ;

       -  une valeur négative si s1 est inférieure à s2 ;

       -  une valeur positive si s1 est supérieure à s2.

       La  fonction  strncmp()  est similaire, mais elle ne compare (au plus) que les n premiers octets de s1 et
       s2.

VALEUR RENVOYÉE

       Les fonctions strcmp() et strncmp() renvoient un entier inférieur, égal ou supérieur à zéro si s1 (ou ses
       n premiers octets) est respectivement inférieure, égale ou supérieure à s2.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).
       ┌──────────────────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │ InterfaceAttributValeur  │
       ├──────────────────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │ strcmp(), strncmp()                                                  │ Sécurité des threads │ MT-Safe │
       └──────────────────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.

NOTES

       POSIX.1 ne spécifie uniquement que :

              Le signe d'une valeur non nulle renvoyée doit être déterminé par le signe de la  différence  entre
              les  valeurs  de  la  première paire d'octets (interprétées comme des unsigned char) qui différent
              dans les chaînes comparées.

       Dans la glibc, et comme dans la plupart des implémentations, la valeur retournée est le résultat arithmé‐
       tique de la soustraction du dernier octet comparé de s2 au dernier octet comparé dans s1 (si les deux ca‐
       ractères sont identiques, la différence est 0).

EXEMPLES

       Le programme suivant peut être utilisé pour illustrer le fonctionnement de strcmp() (recevant deux  argu‐
       ments) et strncmp() (recevant trois arguments). Tout d'abord, quelques exemples utilisant strcmp() :

           $ ./string_comp ABC ABC
           <str1> et <str2> sont égales
           $ ./string_comp ABC AB      # le code ASCII de  'C' est 67;  'C' - '\0' = 67
           <str1> est supérieure à <str2> (67)
           $ ./string_comp ABA ABZ     # le code ASCII de 'A' est 65; le code ASCII de 'Z' est 90
           <str1> est inférieure à <str2> (-25)
           $ ./string_comp ABJ ABC
           <str1> est supérieure à <str2> (7)
           $ ./string_comp $'\201'   # 0201 - 0101 = 0100 (ou 64 en décimal)
           <str1> est supérieure à <str2> (64)

       Le  dernier  exemple utilise une syntaxe spécifique à bash(1) pour générer un chaîne de caractères conte‐
       nant un code ASCII 8 bits ; le resultat met en évidence que la comparaison des chaînes travaille sur  des
       caractères non signés.

       Et quelques exemples utilisant strncmp() :

           $ ./string_comp ABC AB 3
           <str1> est supérieure à <str2> (67)
           $ ./string_comp ABC AB 2
           <str1> et <str2> ont leurs deux premiers octets égaux

   Source du programme

       /* string_comp.c

          Sous licence GNU General Public License version 2 ou supérieure.
       */
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>

       int
       main(int argc, char *argv[])
       {
           int res;

           if (argc < 3) {
               fprintf(stderr, "Usage : %s <str1> <str2> [<long>]\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           if (argc == 3)
               res = strcmp(argv[1], argv[2]);
           else
               res = strncmp(argv[1], argv[2], atoi(argv[3]));

           if (res == 0) {
               printf("<str1> et <str2> sont égaux");
               if (argc > 3)
                   printf(" pour les %d premiers caractères\n", atoi(argv[3]));
               printf("\n");
           } else if (res < 0) {
               printf("<str1> est inférieure à <str2> (%d)\n", res);
           } else {
               printf("<str1> est supérieure à <str2> (%d)\n", res);
           }

           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       memcmp(3),  strcasecmp(3),  strcoll(3),  string(3), strncasecmp(3), strverscmp(3), wcscmp(3), wcsncmp(3),
       ascii(7)

TRADUCTION

       La  traduction  française   de   cette   page   de   manuel   a   été   créée   par   Christophe   Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry Vignaud <tvi‐
       gnaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe  Guérard  <fe‐
       vrier@tigreraye.org>,  Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@de‐
       bian.org>,  Thomas  Huriaux  <thomas.huriaux@gmail.com>,   Nicolas   François   <nicolas.francois@centra‐
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
       Denis   Barbier   <barbier@debian.org>,   David  Prévot  <david@tilapin.org>,  Frédéric  Hantrais  <fhan‐
       trais@gmail.com>, Grégoire Scano <gregoire.scano@malloc.fr> et Lucien Gentis <lucien.gentis@waika9.com>

       Cette traduction est une documentation libre ; veuillez vous  reporter  à  la  GNU General Public License
       version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si  vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à de‐
       bian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.03                    5 février 2023                                        strcmp(3)