Fonction strcmp

Entête à inclure

#include <string.h>  // <cstring> en C++

Fonction strcmp

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 faites dans l'ordre lexicographique (et donc, en tenant compte des valeurs ASCII 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.

Paramètres

  • first : la première chaîne de caractères à comparer.
  • second : la seconde chaîne de caractères à comparer.

Valeur de retour

Trois cas distincts doivent être considérés. Soit les deux chaînes sont égales : dans ce cas, un 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ées. Dans tous les cas, la valeur absolue indiquera la position du premier caractères permettant de produire le résultat.

Exemple de code

#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;
}

Sujets connexes

malloc
strcat
strcpy
strlen