strcmp(3) Library Functions Manual strcmp(3) NOM strcmp, strncmp - Comparer deux chaines BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include 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 chaines s1 et s2. La locale n'est pas prise en compte (pour une comparaison basee sur la locale, consultez strcoll(3)). La comparaison est effectuee sur des caracteres non signes. strcmp() retourne un entier indiquant le resultat de la comparaison comme suit : - 0 si s1 et s2 sont egales ; - une valeur negative si s1 est inferieure a s2 ; - une valeur positive si s1 est superieure a s2. La fonction strncmp() est similaire, mais elle ne compare (au plus) que les n premiers octets de s1 et s2. VALEUR RENVOYEE Les fonctions strcmp() et strncmp() renvoient un entier inferieur, egal ou superieur a zero si s1 (ou ses n premiers octets) est respectivement inferieure, egale ou superieure a s2. ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +---------------------------------+--------------------------+---------+ |Interface | Attribut | Valeur | +---------------------------------+--------------------------+---------+ |strcmp(), strncmp() | Securite des threads | MT-Safe | +---------------------------------+--------------------------+---------+ VERSIONS POSIX.1 ne specifie uniquement que : Le signe d'une valeur non nulle renvoyee doit etre determine par le signe de la difference entre les valeurs de la premiere paire d'octets (interpretees comme des unsigned char) qui different dans les chaines comparees. Dans la glibc, et comme dans la plupart des implementations, la valeur retournee est le resultat arithmetique de la soustraction du dernier octet compare de s2 au dernier octet compare dans s1 (si les deux caracteres sont identiques, la difference est 0). STANDARDS C11, POSIX.1-2008. HISTORIQUE POSIX.1-2001, C89, SVr4, 4.3BSD. EXEMPLES Le programme suivant peut etre utilise 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 et sont egales $ ./string_comp ABC AB # le code ASCII de 'C' est 67; 'C' - '\0' = 67 est superieure a (67) $ ./string_comp ABA ABZ # le code ASCII de 'A' est 65; le code ASCII de 'Z' est 90 est inferieure a (-25) $ ./string_comp ABJ ABC est superieure a (7) $ ./string_comp $'\201' # 0201 - 0101 = 0100 (ou 64 en decimal) est superieure a (64) Le dernier exemple utilise une syntaxe specifique a bash(1) pour generer un chaine de caracteres contenant un code ASCII 8 bits ; le resultat met en evidence que la comparaison des chaines travaille sur des caracteres non signes. Et quelques exemples utilisant strncmp() : $ ./string_comp ABC AB 3 est superieure a (67) $ ./string_comp ABC AB 2 et ont leurs deux premiers octets egaux Source du programme /* string_comp.c Licensed under GNU General Public License v2 or later. */ #include #include #include int main(int argc, char *argv[]) { int res; if (argc < 3) { fprintf(stderr, "Usage: %s []\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(" and are equal"); if (argc > 3) printf(" in the first %d bytes\n", atoi(argv[3])); printf("\n"); } else if (res < 0) { printf(" is less than (%d)\n", res); } else { printf(" is greater than (%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 francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot , Frederic Hantrais , Gregoire Scano et Lucien Gentis Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 strcmp(3)