quarta-feira, 29 de fevereiro de 2012

Comparando textos em C

Olá pessoal, hoje vamos aprender a comparar textos na linguagem C. Digamos que você está desenvolvendo em programa e precisa fazer uma verificação em uma variavel que armazena um texto. Como você montaria um algoritmo para resolveria esse problema?

Seria algo como:
Se desenho_animado = "pokemon" Então
     //logica para capturar pokemon

Mais o poblema é passar isso para a linguagem C, já que no C o sinal de igual (=) significa atribuir.
Em C, quando queremos comparar duas variáveis utilizamos a função strcmp, strcmpi. As duas fazem parte da biblioteca <string.h>, e para serem utilizadas a biblioteca <string.h> deve ser incluida ( #include <nome da biblioteca> ).

Como usar as funções para comparar

A linguagem C não retorna algo como verdadeiro (true) ou falso (false), como em muitas outras linguagens de programação. Em C, verdadeiro é representado pelo número 0 , enquanto falso é representado pelo número 1. Quando usamos a função strcmp ou strcmpi ela percorre letra por letra as duas palavras comparando-as e o retorno da função é de: 0 para palavras iguais ou 1 para palavras diferentes .

Exemplo:

strcmp("picachu","pikachu"); //a função retorna 1
strcmp("pikachu","pikachu"); //a função retorna 0

Se a função retorna um número , temos que guardar esse número para sabermos qual foi o resultado da comparação, não é mesmo? Para fazer essa comparação podemos declarar uma variável que armazenará o número retornado pela função, ou comparar o retorno da função diretamente no comando if.

Exemplos:

int resultado;
resultado = strcmp("picachu","pikachu");

if (resultado ==  0
{
        printf("As palavras são iguais");
}
else
{
        printf("As palavras são diferentes");
}

ou

if(strcmp == 0)
{
         printf("As palavras são iguais");
}
else
{
         printf("As palavras são diferentes");
}

Qual a diferença entre strcmp e strcmpi?


A diferença entre o strcmp  e strcmpi, é que o strcmp diferencia letras maiusculas de letras minusculas, já o strcmpi não.

Exemplo:

strcmp("pikachu","PIKACHU"); //a função retorna 1, ou seja, não é igual
strcmpi("pikachu","PIKACHU"); //a função retorna 0, ou seja, é igual

NOTA: Não esqueçam de incluir a biblioteca no inicio do programa. 

Bom pessoal, por hoje é só... ate´ a próxima.

Um comentário:

Novidade!!! Agora vamos ter canal no Youtube =D

Fala pessoal tudo beleza, estou sumido a correria está forte por aqui. Estou querendo dar um start em um projeto antigo que vem desde o temp...