Provided by: manpages-fr-dev_4.13-4_all bug

NOM

       strcmp, strncmp - Comparer deux chaînes

SYNOPSIS

       #include <string.h>

       int strcmp(const char *s1, const char *s2);

       int strncmp(const char *s1, const char *s2, 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 │
       └─────────────────────┴──────────────────────┴─────────┘

CONFORMITÉ

       POSIX.1-2001, POSIX.1-2008, C89, 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 caractères sont identiques, la différence est 0).

EXEMPLES

       Le programme suivant peut être utilisé pour  illustrer  le  fonctionnement  de  strcmp()  (recevant  deux
       arguments) 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' - ' ' = 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' A   # 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
       contenant 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

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

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des
       instructions  pour  signaler  des  anomalies et la dernière version de cette page peuvent être trouvées à
       l'adresse https://www.kernel.org/doc/man-pages/.

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
       <tvignaud@mandriva.com>, François Micaux, Alain Portal  <aportal@univ-montp2.fr>,  Jean-Philippe  Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,     Thomas     Huriaux      <thomas.huriaux@gmail.com>,      Nicolas      François
       <nicolas.francois@centraliens.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 <fhantrais@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 à
       debian-l10n-french@lists.debian.org.

                                                  11 avril 2020                                        STRCMP(3)