#include <string.h> // <cstring> en C++
int strcmp( const char * first, const char * second );
Cette fonction permet de comparer deux chaînes de caractères et de savoir si la première est inférieure, égale ou supérieure à la seconde. Cette comparaison sera réalisée en utilisant l'ordre lexicographique et donc, en tenant compte des valeurs numérique des codes ASCII (ou Unicode, selon l'encodage utilisé) des différents caractères comparés.
En langage C, les chaînes de caractères sont qualifiées d'AZT : A Zéro Terminal. Cela signifie qu'une chaîne de caractères se termine forcément
par un code ASCII nul (pouvant aussi être représenté par '\0'
). Cette valeur de fin de chaîne est bien entendu compatible avec l'ordre
lexicographique utilisé par la fonction strcmp
.
strcmp
est « case sensitive ». Cela signifie qu'elle tient compte de la casse : ainsi la chaîne la chaîne
"Toto"
est bien inférieure à la chaîne "toto"
, car le caractère 'T'
(de code ASCII 84) et bien avant le caractère
't'
(de code ASCII 116). De même, la comparaison est indépendante de la localisation en cours. Si votre chaîne de caractères utilise des
caractères accentués, la comparaison pourra être problématique (tous les caractères accentués possédant des codes numériques supérieurs à ceux de lettres
non accentuées). Si vous souhaitez tenir compte de la localisation en cours, préférez l'utilisation de la fonction strcoll.
Trois cas distincts doivent être considérés. Soit les deux chaînes sont égales : dans ce cas, une valeur nulle sera retournée. Soit la première chaîne est plus petite que la seconde (dans l'ordre lexicographique) : dans ce cas, une valeur négative sera retournée. Soit la première chaîne est plus grande que la seconde : dans ce dernier cas, une valeur positive sera renvoyée. Dans tous les cas, la valeur absolue indiquera la position du premier caractères permettant de produire le résultat.
#include <stdio.h> #include <string.h> int main() { char login[40]; char password[40]; printf( "Please, enter your login: " ); scanf( "%s", login ); printf( "Enter your password: " ); scanf( "%s", password ); if ( strcmp( login, "bond" ) == 0 && strcmp( password, "007" ) == 0 ) { printf( "You are connected\n" ); } else { printf( "Login failed. Retry later.\n" ); } return 0; }
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :