Strings podem ser comparadas usando a função string ou sem usar a função string. Primeiro, veremos como podemos comparar as strings com a ajuda da função string, ou seja, strcmp(), que é definido em um string.h arquivo de cabeçalho.
Comparação de strings usando a função string
A função string que é pré-definida em um string.h arquivo de cabeçalho é um strcmp() função. A função strcmp() considera duas strings como parâmetro, e esta função retorna um valor inteiro onde o valor inteiro pode ser zero , positivo ou negativo .
A sintaxe da função strcmp() é fornecida abaixo:
int strcmp (const char* str1, const char* str2);
Na sintaxe acima, dois parâmetros são passados como strings, ou seja, str1 e str2 , e o tipo de retorno é interno significa que strcmp() retorna um valor inteiro.
A função strcmp() compara o caractere de ambas as strings. Se o primeiro caractere de ambas as strings for igual, esse processo de comparação continuará até que todos os caracteres sejam comparados ou o ponteiro aponte para o caractere nulo ' '.
Possíveis valores de retorno da função strcmp()
Valor de retorno | Descrição |
---|---|
0 | Quando ambas as strings são iguais. |
<0< td> | Se o valor ASCII de um caractere da primeira string for menor que o valor ASCII de um caractere da segunda string, a função retornará um valor negativo. | 0<>
>0 | Se o valor ASCII de um caractere da primeira string for maior que o valor ASCII de um caractere da segunda string, a função retornará um valor positivo. |
Vamos entender através de um exemplo.
#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; }
Análise do programa acima
- Declaramos dois arrays do tipo char, ou seja, str1 e str2. Consideramos a entrada do usuário como strings.
- Comparamos as strings usando o strcmp() função, ou seja, strcmp(str1,str2). Esta função irá comparar as strings str1 e str2. Se a função retornar o valor 0 significa que ambas as strings são iguais, caso contrário as strings não são iguais.
Saída:
Comparação de strings sem usar a função 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; }
Análise do programa acima
- Acima, declaramos dois arrays do tipo char e consideramos a entrada do usuário como strings.
- Definimos uma função compare() que usará strings de entrada do usuário como parâmetro e comparará ambas as strings. Se a função retornar 0, o que significa que ambas as strings são iguais, caso contrário, ambas as strings não são iguais .
Saída:
Comparação de strings usando ponteiros
#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; }
Análise do programa acima
- Criamos dois arrays do tipo char str1 e str2. Consideramos a entrada do usuário como strings.
- Definimos uma função stringcompare() que usará dois ponteiros do tipo char como parâmetro. O ponteiro 'a' contém o endereço de str1 e o ponteiro 'b' contém o endereço de str2. Dentro da função, criamos um loop while que será executado até que o ponteiro a ou b não alcance um caractere nulo.
Saída: