Como usar strcmp em C: Comparação de strings explicada com exemplos

Quando comparamos strings em C, o que usamos? A função strcmp verifica se duas strings são iguais — como perguntar ao seu programa: “Essas duas são as mesmas?”. É claro que um programa não pode decidir se gatos ou cachorros são mais fofos, mas ele pode distinguir entre “HELLO” e “hello”. Neste artigo, exploraremos como o strcmp funciona, como usá‑lo e os erros comuns a evitar.

1. O que é a função strcmp?

A função strcmp compara duas strings caractere por caractere e devolve um inteiro com base no resultado. Veja como ela se comporta:

  • 0 : As strings são exatamente iguais
  • Valor positivo : A primeira string vem depois da segunda em ordem lexicográfica
  • Valor negativo : A primeira string vem antes da segunda em ordem lexicográfica

Portanto, não só é possível verificar se duas strings são idênticas, como também determinar qual delas vem primeiro. Aqui está um exemplo simples de como usá‑la no código:

#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "Hello";
    char str2[] = "World";

    int result = strcmp(str1, str2);
    printf("Result of strcmp: %dn", result);
    return 0;
}

Este código compara “Hello” e “World” e imprime o resultado. É importante notar que strcmp é sensível a maiúsculas e minúsculas, portanto “HELLO” e “hello” serão tratadas como strings diferentes.

2. Como o strcmp funciona internamente

O comportamento do strcmp é simples, porém poderoso. Ele compara duas strings caractere por caractere a partir do início e, assim que encontra uma diferença, devolve a diferença entre esses caracteres. Esse mecanismo também é útil para comparações alfabéticas — por exemplo, ao comparar “apple” e “banana”, strcmp compara primeiro ‘a’ e ‘b’ e devolve um valor negativo.

Aqui está outro exemplo de programa para ajudar a entender como o strcmp funciona:

#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "apple";
    char str2[] = "banana";

    int result = strcmp(str1, str2);
    if (result == 0) {
        printf("The strings match.n");
    } else if (result < 0) {
        printf("str1 comes before str2.n");
    } else {
        printf("str1 comes after str2.n");
    }

    return 0;
}

Este código compara “apple” e “banana”. Como esperado, strcmp indica que “apple” vem antes de “banana” em ordem lexicográfica. Isso o torna uma ferramenta prática para ordenar strings alfabeticamente.

年収訴求

3. Exemplos de uso do strcmp

1. Verificando a entrada do usuário

strcmp é útil quando você deseja comparar a entrada do usuário com dados existentes — como verificar se uma senha corresponde à correta.

#include <stdio.h>
#include <string.h>

int main() {
    char password[] = "secret";
    char input[256];

    printf("Enter your password: ");
    scanf("%s", input);

    if (strcmp(password, input) == 0) {
        printf("Password match.n");
    } else {
        printf("Incorrect password.n");
    }

    return 0;
}

Este programa compara a senha digitada com a senha correta usando strcmp.

2. Ordenando em ordem lexicográfica

strcmp também é prático para ordenar strings alfabeticamente. Ao ordenar uma lista de palavras, você pode usar strcmp para determinar qual palavra deve aparecer primeiro.

4. Alternativas ao strcmp

Embora strcmp seja muito útil, há casos em que outras funções podem ser mais adequadas, dependendo do que você deseja alcançar.

strncmp: comparar parte de uma string

Se você quiser comparar apenas parte de uma string, strncmp é a melhor opção. Por exemplo, se quiser comparar apenas os primeiros 3 caracteres de duas strings, use essa função.

#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "apple";
    char str2[] = "apricot";

    if (strncmp(str1, str2, 3) == 0) {
        printf("The first 3 characters match.n");
    } else {
        printf("The first 3 characters do not match.n");
    }

    return 0;
}

memcmp: comparar memória bruta

memcmp é usado para comparar memória bruta em vez de apenas strings. É útil ao lidar com dados binários ou blocos de memória não textuais.

5. Erros Comuns ao Usar strcmp

1. Ignorando Sensibilidade a Maiúsculas e Minúsculas

strcmp diferencia maiúsculas de minúsculas. Isso significa que “HELLO” e “hello” são consideradas strings diferentes. Se precisar fazer uma comparação que ignore maiúsculas/minúsculas, considere usar strcasecmp em vez disso (nota: esta função pode variar dependendo do seu ambiente).

2. Comparando Ponteiros NULL

Se você tentar usar strcmp para comparar um ponteiro NULL, seu programa provavelmente travará. Sempre certifique‑se de que as strings que você está comparando foram inicializadas corretamente.

Conclusão

strcmp é uma função essencial na programação em C que torna a comparação de strings simples e eficaz. Passamos por exemplos reais, como verificação de senhas e ordenação alfabética, para mostrar como ela é usada na prática. Se você trabalha com strings em seus programas, certamente achará esta função incrivelmente útil — experimente e veja como ela se encaixa no seu código!

年収訴求