En langage C, le fichier d'en-tête contient la bibliothèque de chaînes standard qui contient des fonctions de manipulation de chaînes utiles et couramment utilisées. Dans cet article, nous verrons comment comparer des chaînes en C à l'aide de la fonction strcmp().
Qu’est-ce que strcmp() en C ?
C strcmp() est une fonction de bibliothèque intégrée utilisée pour la comparaison de chaînes. Cette fonction prend deux chaînes (tableau de caractères) comme arguments, compare ces deux chaînes lexicographiquement , puis renvoie 0,1 ou -1 comme résultat. Il est défini à l'intérieur fichier d'en-tête avec son prototype comme suit :
Syntaxe de strcmp() en C
strcmp( first_str , second_str );>
Paramètres de strcmp() en C
Cette fonction prend deux chaînes (tableau de caractères) comme paramètres :
- first_str : la première chaîne est considérée comme un pointeur vers le caractère constant (c'est-à-dire une chaîne immuable). second_str : la deuxième chaîne est considérée comme un pointeur vers un caractère constant.
Note: La raison pour laquelle les arguments sont pris comme const char * au lieu de seulement char * est que la fonction ne peut pas modifier la chaîne et également les rendre applicables aux chaînes constantes.
Valeur de retour de strcmp() en C
La fonction strcmp() renvoie trois valeurs différentes après la comparaison des deux chaînes qui sont les suivantes :
1. Zéro ( 0 )
Une valeur égale à zéro lorsque les deux chaînes sont identiques. C'est, tous les caractères des deux chaînes sont identiques.
2. Supérieur à zéro (> 0 )
Une valeur supérieure à zéro est renvoyée lorsque le le premier caractère qui ne correspond pas dans first_str a une valeur ASCII plus grande que le caractère correspondant dans second_str ou nous pouvons aussi dire que si le caractère de first_str est lexicographiquement après le caractère de second_str, alors zéro est renvoyé.
3. Inférieur à zéro ( <0 )
Une valeur inférieure à zéro est renvoyée lorsque le le premier caractère qui ne correspond pas dans first_str a une valeur ASCII inférieure que le caractère correspondant dans second_str . On peut aussi dire que si le caractère de first_str est lexicographiquement avant le caractère de second_str, zéro est renvoyé.
Pour en savoir plus sur les valeurs ASCII, reportez-vous à cet article – Tableau ASCII
Comment utiliser la fonction strcmp() en C
L'exemple suivant montre comment utiliser la fonction strcmp() en C :
C
// C Program to Demonstrate the use of strcmp() function> #include> #include> int> main()> {> >// declaring two same string> >char>* first_str =>'Geeks'>;> >char>* second_str =>'Geeks'>;> >// printing the strings> >printf>(>'First String: %s
'>, first_str);> >printf>(>'Second String: %s
'>, second_str);> >// printing the return value of the strcmp()> >printf>(>'Return value of strcmp(): %d'>,> >strcmp>(first_str, second_str));> >return> 0;> }> |
chaîne java indexof
>
>Sortir
First String: Geeks Second String: Geeks Return value of strcmp(): 0>
Comment fonctionne strcmp() en C ?
La fonction C strcmp() fonctionne en comparant les deux chaînes lexicographiquement . Cela signifie qu'il compare la valeur ASCII de chaque caractère jusqu'à ce que la valeur non correspondante soit trouvée ou que le caractère NULL soit trouvé. Le fonctionnement de la fonction C strcmp() peut être décrit comme suit :
1. Cela commence par comparer les valeurs ASCII des premiers caractères des deux chaînes.
2. Si les premiers caractères des deux chaînes sont égaux, alors cette fonction vérifiera le deuxième caractère, s'ils sont également égaux, alors elle vérifiera le troisième, et ainsi de suite jusqu'à ce que le premier caractère sans correspondance soit trouvé ou que le caractère NULL soit trouvé.
quel est le système de fichiers Linux
3. Si un Le caractère NULL est trouvé , la fonction renvoie zéro car les deux chaînes seront identiques.
4. Si un caractère ne correspondant pas est trouvé,
- Si la valeur ASCII du caractère de la première chaîne est supérieure à celle de la deuxième chaîne, alors la différence positive ( > 0 ) entre leurs valeurs ASCII est renvoyé.
- Si la valeur ASCII du caractère de la première chaîne est inférieure à celle de la deuxième chaîne, alors la différence négative ( < 0 ) entre leurs valeurs ASCII est renvoyé.
Ces trois cas sont illustrés dans les exemples ci-dessous.
Exemples de strcmp() en C
Exemple 1. Comportement strcmp() pour des chaînes identiques
Ce programme illustre le comportement de la fonction strcmp() pour des chaînes identiques.
C
// C program to illustrate> // strcmp() function> #include> #include> int> main()> {> > >char> first_str[] =>'g f g'>;> >char> second_str[] =>'g f g'>;> > >// Using strcmp()> >int> res =>strcmp>(first_str, second_str);> > >if> (res==0)> >printf>(>'Strings are equal'>);> >else> >printf>(>'Strings are unequal'>);> > >printf>(>'
Value returned by strcmp() is: %d'> , res);> >return> 0;> }> |
>
>Sortir
Strings are equal Value returned by strcmp() is: 0>
Exemple 2. Comportement strcmp() pour la première chaîne lexicographiquement plus grande
L'exemple ci-dessous montre le comportement de la fonction strcmp() pour la première chaîne lexicographiquement plus grande.
C
cours de mathématiques java
// C program to illustrate> // strcmp() function> #include> #include> int> main()> {> >// z has greater ASCII value than g> >char> first_str[] =>'zfz'>;> >char> second_str[] =>'gfg'>;> > >int> res =>strcmp>(first_str, second_str);> > >if> (res==0)> >printf>(>'Strings are equal'>);> >else> >printf>(>'Strings are unequal'>);> > >printf>(>'
Value of result: %d'> , res);> > >return> 0;> }> |
>
>Sortir
Strings are unequal Value of result: 19>
Exemple 3. Comportement strcmp() pour la première chaîne lexicographiquement plus petite.
L'exemple ci-dessous montre le comportement de la fonction strcmp() pour la première chaîne lexicographiquement plus petite.
C
// C program to illustrate> // strcmp() function> #include> #include> int> main()> {> >// b has less ASCII value than g> >char> first_str[] =>'bfb'>;> >char> second_str[] =>'gfg'>;> > >int> res =>strcmp>(first_str, second_str);> > >if> (res==0)> >printf>(>'Strings are equal'>);> >else> >printf>(>'Strings are unequal'>);> > >printf>(>'
Value returned by strcmp() is: %d'> , res);> > > >return> 0;> }> |
>
>
services Web JavaSortir
Strings are unequal Value returned by strcmp() is: -5>
Conclusion
Dans cet article, nous avons discuté de Fonction de bibliothèque standard C strcmp() qui est utilisé pour comparer deux chaînes lexicographiquement. La bibliothèque standard contient des fonctions utiles et fréquemment utilisées qui facilitent la programmation car elles évitent de réécrire encore et encore la fonction couramment utilisée en cas de besoin.
FAQ sur strcmp() en C
1. Comment comparer deux chaînes en C ?
Ans: Nous pouvons utiliser la fonction strcmp() qui est définie dans le fichier d'en-tête pour comparer lexicographiquement deux chaînes (tableau de caractères).
2. Quel est le prototype de fonction de strcmp() en C ?
Ans: Le prototype de la fonction strcmp() est le suivant :
int strcmp(const char* lhs , const char* rhs );>
3. Quand la fonction strcmp() renvoie zéro ?
Ans: La fonction strcmp() renvoie zéro lorsque les deux chaînes sont identiques.
4. Que signifie la valeur de retour positive de la fonction strcmp() ?
Ans: La fonction strcmp() renvoie une valeur positive lorsque la première chaîne est lexicographiquement supérieure à la deuxième chaîne.
5. Que signifie la valeur de retour négative de la fonction strcmp() ?
Ans: La valeur négative renvoyée par la fonction strcmp() signifie que la première chaîne est lexicographiquement plus petite que la deuxième chaîne.
6. Comment la fonction strcmp() compare-t-elle deux chaînes en C ?
Ans: La fonction strcmp() compare les valeurs ASCII de chaque caractère des deux chaînes jusqu'à ce que le caractère non correspondant ou le caractère NULL soit trouvé.
7. La fonction strcmp() peut-elle être utilisée pour comparer les types de données non-chaînes en C ?
Ans: Non, la fonction strcmp() ne peut pas comparer les types de données non-chaîne en C. Elle ne peut comparer que le type de données chaîne mutable ou immuable se terminant par un caractère NULL.
Articles Liés:
- Chaînes en C
- Fonctions String couramment utilisées en C/C++ avec exemples