Deux cordes peuvent être comparées de diverses manières. Dans ce tutoriel, nous verrons d'abord une fonction définie par l'utilisateur pour comparer deux chaînes, puis nous verrons certaines fonctions de bibliothèque intégrées qui peuvent être utilisées pour comparer deux chaînes très facilement. Alors, commençons.
Comparaison de chaîne à l'aide d'une fonction définie par l'utilisateur:
Nous allons écrire une fonction StringCompare () Pour comparer les chaînes. Nous traversons les cordes et comparons chaque caractère de la chaîne jusqu'à ce que nous atteignions la fin de l'un ou des deux ou des incomparables se trouvent. Si la traversée est atteinte à la fin des deux cordes, les cordes sont appariées; Sinon, les cordes sont incompatibles.
01. / * UserDefinedFunction.c * /Ici, nous traversons les cordes en utilisant la boucle pendant que la boucle et une variable je. Lorsque les caractères sont égaux dans la même position des deux cordes, la valeur de je est incrémenté de 1 (ligne 13). Si les caractères ne sont pas égaux (ligne 09) ou si nous atteignons l'extrémité de la chaîne (ligne 11), alors la boucle while est une pause. Après la boucle while, nous vérifions que les deux traversées de cordes sont atteintes à la fin ou non (ligne 16). Si la traversée est atteinte à la fin des deux cordes, alors les cordes sont égales sinon pas.
Comparaison de chaîne à l'aide de fonctions de bibliothèque intégrées:
Les fonctions de bibliothèque suivantes peuvent être utilisées pour la comparaison des chaînes. Toutes les fonctions sont déclarées dans le chaîne.H En tête de fichier.
Strcmp () Fonction:
Cette fonction compare deux chaînes passées à la fonction.
Syntaxe:
int strcmp (const char * str1, const char * str2)Valeur de retour: Retour 0 Si les cordes sont égales. Renvoie un entier négatif si la valeur ASCII du premier caractère inégalé de la première chaîne est inférieure à la deuxième chaîne. Renvoie un entier positif si la valeur ASCII du premier caractère inégalé de la première chaîne est supérieure à la deuxième chaîne. Certains systèmes renvoient la différence de la valeur ASCII du premier caractère incompatible et que certains systèmes renvoient -1 si la valeur ASCII du premier caractère inégalé de la première chaîne est inférieure à la deuxième chaîne et renvoie 1 si la valeur ASCII du premier caractère inégalé du caractère du caractère du caractère du caractère du caractère du caractère du caractère du caractère du caractère du caractère de La première chaîne est supérieure à la deuxième chaîne.
Exemple | Valeur de retour | Explication |
strcmp ( «Hello World», «Hello World» ) | 0 | Deux cordes sont les mêmes. |
strcmp ( «Bonjour», «Hello \ 0 Monde» ) | 0 | Les cordes sont comparées jusqu'à ce que le caractère '\ 0'. La première chaîne par défaut se termine par '\ 0', et la deuxième chaîne contient le caractère '\ 0' après 'Hello'. |
strcmp ( "Hello \ 0 \ 0 \ 0", "Hello \ 0 Monde" ) | 0 | Les cordes sont comparées jusqu'à ce que le caractère '\ 0'. |
strcmp ( «Hello World», «Hello World» ) | Entier négatif | La valeur ASCII du premier caractère inégalé de la première chaîne ('h') est inférieure à la deuxième chaîne ('h') |
strcmp («Hello World», «Hello World» ) | Entier positif | La valeur ASCII du premier caractère inégalé de la première chaîne ('h') est supérieure à la deuxième chaîne ('h') |
Strncmp () Fonction:
Cette fonction est similaire à la fonction strcmp (), Mais ici, nous devons spécifier combien d'octets sont comparés en passant un argument supplémentaire à la fonction.
Syntaxe:
int strncmp (const char * str1, const char * str2, size_t n)Valeur de retour: La fonction renvoie 0 Si le premier n Les caractères des deux cordes sont égaux; Sinon, il renvoie un entier négatif ou positif en fonction du signe des différences entre la valeur ASCII du premier personnage incompatible.
Exemple | Valeur de retour | Explication |
strncmp ( «Hello World», «Hello World», 5 ) | 0 | Les 5 premiers caractères sont les mêmes. |
strncmp ( «Bonjour», «Hello \ 0 Monde», 5 ) | 0 | Les 5 premiers caractères sont les mêmes. |
strncmp ( "Hello \ 0 \ 0 \ 0", "Hello \ 0 Monde", 8 ) | 0 | '\ 0' est après les 5 premiers caractères des deux cordes. Ainsi, la comparaison est arrêtée après 5 pas 8. |
strncmp ( «Hello World», «Hello World», 5 ) | Entier négatif | La valeur ASCII du premier caractère inégalé de la première chaîne ('h') est inférieure à la deuxième chaîne ('h') |
StrCasecmp () Fonction:
Cette fonction est similaire à la fonction strcmp (), Mais ici, les cordes ne sont pas sensibles à la casse.
Syntaxe:
int strcasecmp (const char * str1, const char * str2)Valeur de retour: Pareil que strcmp (), Mais les cordes sont traitées comme cas de cas.
Exemple | Valeur de retour | Explication |
strCasecmpMP ( «Hello World», «Hello World» ) | 0 | Deux cordes sont les mêmes. |
strCasecmpMP ( «Bonjour», «Hello \ 0 Monde» ) | 0 | Les cordes sont comparées jusqu'à ce que le caractère '\ 0'. La première chaîne par défaut se termine par '\ 0', et la deuxième chaîne contient le caractère '\ 0' après 'bonjour'. |
strCasecmpMP ( «Hello World», «Hello World» ) | 0 | Les cordes sont cas de cas. Donc, «Hello World» et «Hello World» sont les mêmes. |
Strncasecmp () Fonction:
Cette fonction est similaire à la fonction strncmp (), Mais ici, les cordes ne sont pas sensibles à la casse.
Syntaxe:
int strncasecmp (const char * str1, const char * str2)Valeur de retour: Pareil que strncmp (), Lorsque les cordes sont traitées comme une case-sensible.
Exemple | Valeur de retour | Explication |
strncasecmp ( «Hello World», «Hello World», 5 ) | 0 | Les 5 premiers caractères sont les mêmes. |
strncasecmp ( «Bonjour», «Hello \ 0 Monde», 5 ) | 0 | Les 5 premiers caractères sont les mêmes. |
strncasecmp ( "Hello \ 0 \ 0 \ 0", "Hello \ 0 Monde", 8 ) | 0 | '\ 0' est après les 5 premiers caractères des deux cordes. Ainsi, la comparaison est arrêtée après 5 pas 8. |
strncasecmp ( «Hello World», «Hello World», 5 ) | 0 | Les cordes sont cas de cas. Donc, «bonjour» et «bonjour» sont les mêmes. |
Fonction memcmp ():
Cette fonction compare deux blocs de mémoire octet par octet. Nous devons passer deux pointeurs des blocs de mémoire et le nombre d'octets à comparer.
Syntaxe:
int memcmp (const void * str1, const void * str2, size_t n)Valeur de retour: La fonction renvoie 0 si les deux blocs de mémoire (n octets) sont égaux; Sinon, il renvoie les différences entre la première paire d'octets incompatibles (les octets sont interprétés comme des objets char non signés, puis promus en int).
Exemple | Valeur de retour | Explication |
memcmp ( «Hello World», «Hello World», 5 ) | 0 | Les 5 premiers caractères sont les mêmes. |
memcmp ( "Hello \ 0 \ 0 \ 0", "Hello \ 0 Monde", 8 ) | Entier négatif | Les 6 premiers caractères sont les mêmes, mais le 7e caractère est différent. Ici, la comparaison n'est pas arrêtée comme strncmp () Lorsque vous obtenez un caractère '\ 0'. |
memcmp ( «Hello World», «Hello World», 11 ) | Entier négatif | La valeur ASCII du premier caractère inégalé de la première chaîne ('h') est inférieure à la deuxième chaîne ('h') |
Exemple:
Voici l'exemple de code C de toutes les fonctions discutées.
01. / * StringCompare.c * /Conclusion:
Donc, dans ce tutoriel, nous avons vu comment les cordes peuvent être comparées de différentes manières. Comme nous l'avons vu, la fonction StringCompare () renvoie -1 pour les chaînes inégales, mais cela peut être modifié afin qu'il renvoie la valeur ASCII du caractère incompatible. Vous pouvez l'utiliser dans votre code, qui vous convient le mieux.