STRNCMP |
Compare les N caractères de la chaine |
---|---|
Langage C | string.h |
Syntaxe
int strncmp(const char *str1,const char *str2,size_t n); |
Paramètres
Nom | Description |
---|---|
str1 | Ce paramètre permet d'indiquer la première chaine de caractères ASCIZ à comparer. |
str2 | Ce paramètre permet d'indiquer la deuxième chaine de caractères ASCIZ à comparer. |
n | Ce paramètre permet d'indiquer le nombre de caractères à comparer. |
Description
Cette fonction permet de comparer les «n» premiers caractères de la chaine de caractères «str1» à la chaine de caractères «str2».
Algorithme
MODULE STRNCMP(s1, s2, n) index ← 0 BOUCLE TANT QUE index < n FAIRE SI s1[index] ≠ s2[index] ALORS RETOURNE (valeur ASCII de s1[index]) - (valeur ASCII de s2[index]) FIN SI SI s1[index] = '\0' ou s2[index] = '\0' ALORS * Les chaînes de caractères sont identiques jusqu'à ce point RETOURNE 0 FIN SI index ← index + 1 FIN BOUCLE TANT QUE * Les premiers n caractères sont identiques RETOURNE 0 |
Remarques
- Valeur de retour : strncmp retourne un entier indiquant la relation entre les deux chaînes de caractères :
- 0 si les chaînes sont égales sur les n premiers caractères.
- Un nombre négatif si str1 est lexicographiquement inférieur à str2.
- Un nombre positif si str1 est lexicographiquement supérieur à str2.
- Limitation avec n : La fonction compare au maximum n caractères, ce qui est utile pour éviter les dépassements de mémoire. Si l'une des chaînes de caractères est plus courte que n, la comparaison s'arrête au caractère nul \0. Cela rend strncmp adaptée à des chaînes de caractères non null-terminées si leur longueur est connue.
- Sensibilité à la casse : strncmp effectue une comparaison sensible à la casse. Ainsi, les lettres majuscules et minuscules sont considérées comme différentes. Par exemple, "ABC" et "abc" seront considérées différentes même si leur contenu est identique à l'exception de la casse.
- Chaînes de caractères courtes ou vides : Si l'une des deux chaînes de caractères est vide ou a une longueur inférieure à n, la comparaison s'arrête au caractère nul. Par conséquent, si deux chaînes de caractères sont identiques mais l'une est plus courte, le résultat de la comparaison dépendra de la différence de longueur.
- Sécurité et contrôle : L'utilisation de n permet d'éviter les problèmes potentiels liés à l'accès mémoire illégal. Cela rend strncmp plus sûre que strcmp dans des scénarios où les chaînes comparées pourraient être partiellement ou mal formées.
- Applications pratiques : strncmp est couramment utilisée pour vérifier si une chaîne de caractères commence par un certain préfixe. Par exemple, pour vérifier si une chaîne de caractères commence par "http", on peut appeler strncmp(str, "http", 4) et analyser le résultat.
- Comparaison avec strcmp : La fonction strncmp se distingue de strcmp en limitant le nombre de caractères comparés. Cela peut être essentiel dans des contextes où les performances ou la sécurité sont des préoccupations, notamment lorsque les chaînes sont extraites de grandes structures de données ou proviennent de sources non fiables.
Voir également
Langage de programmation - C - Référence de procédures et fonctions - strcmp
Langage de programmation - C++ - Référence de procédures et fonctions - strncmp
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 734.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 261.
Dernière mise à jour : Mardi, le 28 juillet 2015