Provided by: manpages-fr-dev_4.23.1-1_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 │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

VERSIONS

       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).

STANDARDS

       C11, POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001, C89, SVr4, 4.3BSD.

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' - '\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 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 v2 ou postérieure.
       */
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>

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

           if (argc < 3) {
               fprintf(stderr, "Utilisation : %s <str1> <str2> [<len>]\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 octets\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  <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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.