Inicial > Programando em C - Códigos & Experiências > Comparando palavras em C: A função strcmp()

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", &amp;senha1);
printf("Digite a segunda expressão (até 20 caracteres):\n");
fgets(deposito, sizeof(deposito), stdin);
sscanf(deposito, "%s", &amp;senha2);
if (strcmp (senha1,senha2) == 0 ) //(3)
{
printf("As senhas conferem\n");
}
else
{
printf("As senhas não conferem\n");
}
}
/*
(1)--&gt;Inicializa as variáveis.
(2)--&gt;Limpa a tela
(3)--&gt;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!

  1. Daniel
    junho 22, 2015 às 15:14

    Muito obrigado, ajudou muito, bem explicado e fácil de entender

  1. No trackbacks yet.

Deixe um comentário