Participer au site avec un Tip
Rechercher
 

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 :

Fonction strncmp

La fonction strncat La fonction strncpy


Entête à inclure

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

Fonction strncmp

int strncmp( const char * first, const char * second, size_t length );

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 faite dans l'ordre lexicographique (et donc, en tenant compte des valeurs ASCII des différents caractères comparés). Néanmoins la comparaison se fera au maximum sur les length premiers caractères.

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

Paramètres

Valeur de retour

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ées. Dans tous les cas, la valeur absolue indiquera la position du premier caractères permettant de produire le résultat.

Attention : notez bien que la comparaison porte au maximum sur les length premiers caractères de la chaîne.

Exemple de code

#include <stdbool.h>
#include <stdio.h>
#include <string.h>

bool startsWith( const char * theString, const char * theBase ) {
    return strncmp( theString, theBase, strlen( theBase ) ) == 0;
}


int main() {

    printf( "\"toto\" starts with \"to\" == %d\n", startsWith( "toto", "to" ) );
    printf( "\"toto\" starts with \"james\" == %d\n", startsWith( "toto", "james" ) );
    printf( "\"james bond\" starts with \"james\" == %d\n", startsWith( "james bond", "james" ) );

    return 0;
}

Sujets connexes

strcmp
strncpy


La fonction strncat La fonction strncpy