Comparando palavras em C: A função strcmp()
Em C, palavras são caracteres entre aspas duplas, do tipo char.
A função utilizada para comparar o conteúdo de uma string é a strcmp() que está definida na biblioteca string.h.
Obs: strcmp() compara o conteúdo, ou seja, se as palavras são iguais, e não se tem o mesmo tamanho.
Sintaxe:
strcmp(palavra1,palavra2);
Onde palavra1 e palavra2 são variáveis do tipo string que devem ser comparadas.
A função strcmp() pode retornar um valor nulo (zero), positivo ou negativo.
Quando as palavras comparadas são iguais, a função retorna 0.
Quando as palavras comparadas são diferentes e a primeira é maior, a função retorna um valor positivo, caso contrário, a função retorna negativo, sendo que no alfabeto a “menor” letra é “a”, e a maior, “z”.
strcmp(maior,menor) == 1 strcmp(“bb”,”aa”) == 1
strcmp(menor,maior) == -1 strcmp(“aa”,”bb”) == -1
strcmp(grande,grande) == 0 strcmp(“bb”,”bb”) == 0
strcmp(pequeno,pequeno) == 0 strcmp(“aa”,”aa”) == 0
Se quiser praticar, copie o código abaixo, compile e rode. O programa imprimirá o resultado das comparações feitas.Altere as strings a serem comparadas, e observe os resultados.
#include <stdio.h>
int main(void)
{
int a,b,c;
a = strcmp(“aaa”,”bbb”);
b = strcmp(“bbb”,”aaa”);
c = strcmp(“ccc”,”ccc”);
printf(“%d\n”, a);
printf(“%d\n”, b);
printf(“%d\n”, c);
}
Outro exemplo:
Verificador de senhas
/* Verificador de senhas * Programa que verifica se duas strings são iguais*/ #include int main(void) { char senha1[21],senha2[21],deposito[26]; //(1) system("clear");//(2) printf("%s%s\n", "Verificador de senhas em C.", "Programa que compara dois vetores de caracteres\n"); printf("Digite a primeira expressão (até 20 caracteres):\n"); fgets(deposito, sizeof(deposito), stdin); sscanf(deposito, "%s", &senha1); printf("Digite a segunda expressão (até 20 caracteres):\n"); fgets(deposito, sizeof(deposito), stdin); sscanf(deposito, "%s", &senha2); if (strcmp (senha1,senha2) == 0 ) //(3) { printf("As senhas conferem\n"); } else { printf("As senhas não conferem\n"); } } /* (1)-->Inicializa as variáveis. (2)-->Limpa a tela (3)-->strcmp retornando 0 significa que as palavras são iguais. Atente também para o uso do operador == (de comparação) e não = (de atribuição). Este é um erro bastante comum. */
Este é o uso da função strcmp().Funções como comparar/mostrar tamanho das palavras, contar número de letras, etc serão abordadas em outros tópicos.
Então, até a próxima!
Muito obrigado, ajudou muito, bem explicado e fácil de entender