Compare Strings em C
-
Use a função
strcmp
para comparar strings -
Use a função
strncmp
para comparar apenas certas partes de strings -
Use as funções
strcasecmp
estrncasecmp
para comparar strings, ignorando a caixa das letras
Este artigo irá apresentar vários métodos sobre como comparar strings em C.
Use a função strcmp
para comparar strings
A função strcmp
é o recurso de biblioteca padrão definido no cabeçalho <string.h>
. Strings de estilo C são apenas sequências de caracteres terminadas pelo símbolo \0
, então a função teria que comparar cada caractere com a iteração.
strcmp
recebe duas strings e retorna o inteiro para denotar o resultado da comparação. O número retornado é negativo se a primeira string for lexicograficamente menor que a segunda string, ou positivo se a última for menor que a anterior, ou 0
se as duas strings forem idênticas.
Observe que, no exemplo a seguir, invertemos o valor de retorno da função e o inserimos na instrução condicional ?:
Para imprimir a saída correspondente no console.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
const char* str1 = "hello there 1";
const char* str2 = "hello there 2";
const char* str3 = "Hello there 2";
!strcmp(str1, str2) ? printf("strings are equal\n")
: printf("strings are not equal\n");
!strcmp(str1, str3) ? printf("strings are equal\n")
: printf("strings are not equal\n");
exit(EXIT_SUCCESS);
}
Resultado:
strings are not equal
strings are not equal
Use a função strncmp
para comparar apenas certas partes de strings
strncmp
é outra função útil definida no cabeçalho <string.h>
, e pode ser utilizada para comparar apenas vários caracteres do início das strings.
strncmp
recebe o terceiro argumento do tipo inteiro para especificar o número de caracteres a serem comparados em ambas as strings. Os valores de retorno da função são semelhantes aos retornados pelo strcmp
.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
const char* str1 = "hello there 1";
const char* str2 = "hello there 2";
!strncmp(str1, str2, 5) ? printf("strings are equal\n")
: printf("strings are not equal\n");
exit(EXIT_SUCCESS);
}
Resultado:
strings are equal
Use as funções strcasecmp
e strncasecmp
para comparar strings, ignorando a caixa das letras
A função strcasecmp
se comporta de maneira semelhante à função strcmp
, exceto que ignora a caixa das letras. Esta função é compatível com POSIX e pode ser utilizada em vários sistemas operacionais junto com strncasecmp
, que implementa a comparação sem distinção entre maiúsculas e minúsculas em um determinado número de caracteres em ambas as strings. O último parâmetro pode ser passado para a função com o terceiro argumento do tipo size_t
.
Observe que os valores de retorno dessas funções podem ser usados diretamente em instruções condicionais.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
const char* str1 = "hello there 2";
const char* str3 = "Hello there 2";
!strcasecmp(str1, str3) ? printf("strings are equal\n")
: printf("strings are not equal\n");
!strncasecmp(str1, str3, 5) ? printf("strings are equal\n")
: printf("strings are not equal\n");
exit(EXIT_SUCCESS);
}
Resultado:
strings are equal
strings are equal
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook