Les chaînes peuvent être comparées soit en utilisant la fonction chaîne, soit sans utiliser la fonction chaîne. Tout d’abord, nous verrons comment comparer les chaînes à l’aide de la fonction chaîne, c’est-à-dire strcmp(), qui est défini dans un chaîne.h En tête de fichier.
Comparaison de chaînes à l'aide de la fonction de chaîne
La fonction de chaîne prédéfinie dans un chaîne.h le fichier d'en-tête est un strcmp() fonction. La fonction strcmp() considère deux chaînes comme paramètre, et cette fonction renvoie une valeur entière où la valeur entière peut être zéro , positif ou négatif .
La syntaxe de la fonction strcmp() est donnée ci-dessous :
int strcmp (const char* str1, const char* str2);
Dans la syntaxe ci-dessus, deux paramètres sont passés sous forme de chaînes, c'est-à-dire : str1 et str2 , et le type de retour est int signifie que strcmp() renvoie une valeur entière.
La fonction strcmp() compare le caractère des deux chaînes. Si le premier caractère des deux chaînes est identique, ce processus de comparaison se poursuivra jusqu'à ce que tous les caractères soient comparés ou que le pointeur pointe vers le caractère nul « 0 ».
Valeurs de retour possibles de la fonction strcmp()
Valeur de retour | Description |
---|---|
0 | Lorsque les deux chaînes sont égales. |
<0< td> | Si la valeur ASCII d'un caractère de la première chaîne est inférieure à la valeur ASCII d'un caractère de la deuxième chaîne, alors la fonction renverra une valeur négative. | 0<>
>0 | Si la valeur ASCII d'un caractère de la première chaîne est supérieure à la valeur ASCII d'un caractère de la deuxième chaîne, alors la fonction renverra une valeur positive. |
Comprenons à travers un exemple.
#include #include int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array int value; // declaration of integer variable printf('Enter the first string : '); scanf('%s',str1); printf('Enter the second string : '); scanf('%s',str2); // comparing both the strings using strcmp() function value=strcmp(str1,str2); if(value==0) printf('strings are same'); else printf('strings are not same'); return 0; }
Analyse du programme ci-dessus
- Nous avons déclaré deux tableaux de type char, c'est-à-dire str1 et str2. Nous prenons les entrées de l'utilisateur sous forme de chaînes.
- Nous comparons les chaînes en utilisant le strcmp() fonction, c'est-à-dire strcmp(str1,str2). Cette fonction comparera les chaînes str1 et str2. Si la fonction renvoie la valeur 0, cela signifie que les deux chaînes sont identiques, sinon les chaînes ne sont pas égales.
Sortir:
Comparaison de chaînes sans utiliser la fonction strcmp()
#include int compare(char[],char[]); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf('Enter the first string : '); scanf('%s',str1); printf('Enter the second string : '); scanf('%s',str2); int c= compare(str1,str2); // calling compare() function if(c==0) printf('strings are same'); else printf('strings are not same'); return 0; } // Comparing both the strings. int compare(char a[],char b[]) { int flag=0,i=0; // integer variables declaration while(a[i]!=' ' &&b[i]!=' ') // while loop { if(a[i]!=b[i]) { flag=1; break; } i++; } if(flag==0) return 0; else return 1; }
Analyse du programme ci-dessus
- Dans ce qui précède, nous avons déclaré deux tableaux de type char et nous prenons les entrées de l'utilisateur sous forme de chaînes.
- Nous avons défini une fonction compare() qui prendra les chaînes d'entrée de l'utilisateur comme paramètre et comparera les deux chaînes. Si la fonction renvoie 0, cela signifie que les deux chaînes sont égales, sinon les deux chaînes ne sont pas égales. .
Sortir:
Comparaison de chaînes à l'aide de pointeurs
#include int stringcompare(char*,char*); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf('Enter the first string : '); scanf('%s',str1); printf(' Enter the second string : '); scanf('%s',str2); int compare=stringcompare(str1,str2); // calling stringcompare() function. if(compare==0) printf('strings are equal'); else printf('strings are not equal'); return 0; } // Comparing both the strings using pointers int stringcompare(char *a,char *b) { int flag=0; while(*a!=' ' && *b!=' ') // while loop { if(*a!=*b) { flag=1; } a++; b++; } if(flag==0) return 0; else return 1; }
Analyse du programme ci-dessus
- Nous avons créé deux tableaux de caractères de type str1 et str2. Nous prenons les entrées de l'utilisateur sous forme de chaînes.
- Nous avons défini une fonction stringcompare() qui prendra en paramètre deux pointeurs de type char. Le pointeur 'a' contient l'adresse de str1 et le pointeur 'b' contient l'adresse de str2. A l'intérieur de la fonction, nous avons créé une boucle while qui s'exécutera jusqu'à ce que le pointeur a ou b n'atteigne pas un caractère nul.
Sortir: