logo

Programa C para comparar as duas strings

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 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(&apos;Enter the first string : &apos;); scanf(&apos;%s&apos;,str1); printf(&apos;Enter the second string : &apos;); scanf(&apos;%s&apos;,str2); // comparing both the strings using strcmp() function value=strcmp(str1,str2); if(value==0) printf(&apos;strings are same&apos;); else printf(&apos;strings are not same&apos;); 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:

Programa C para comparar as duas strings
Programa C para comparar as duas strings

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(&apos;Enter the first string : &apos;); scanf(&apos;%s&apos;,str1); printf(&apos;Enter the second string : &apos;); scanf(&apos;%s&apos;,str2); int c= compare(str1,str2); // calling compare() function if(c==0) printf(&apos;strings are same&apos;); else printf(&apos;strings are not same&apos;); return 0; } // Comparing both the strings. int compare(char a[],char b[]) { int flag=0,i=0; // integer variables declaration while(a[i]!=&apos;&apos; &amp;&amp;b[i]!=&apos;&apos;) // 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:

Programa C para comparar as duas strings

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(&apos;Enter the first string : &apos;); scanf(&apos;%s&apos;,str1); printf(&apos;
Enter the second string : &apos;); scanf(&apos;%s&apos;,str2); int compare=stringcompare(str1,str2); // calling stringcompare() function. if(compare==0) printf(&apos;strings are equal&apos;); else printf(&apos;strings are not equal&apos;); return 0; } // Comparing both the strings using pointers int stringcompare(char *a,char *b) { int flag=0; while(*a!=&apos;&apos; &amp;&amp; *b!=&apos;&apos;) // 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:

Programa C para comparar as duas strings