Comparar cadenas en C
-
Usa la función
strcmp
para comparar cadenas -
Utilice la función
strncmp
para comparar sólo ciertas partes de las cadenas -
Usar las funciones
strcasecmp
ystrncasecmp
para comparar cadenas ignorando el caso de las letras
Este artículo introducirá múltiples métodos sobre cómo comparar cadenas en C.
Usa la función strcmp
para comparar cadenas
La función strcmp
es una función de la biblioteca estándar definida en la cabecera <string.h>
. Las cadenas en C son sólo secuencias de caracteres terminadas por el símbolo \0
, por lo que la función tendría que comparar cada carácter con iteración.
strcmp
toma dos cadenas de caracteres y devuelve el número entero que denota el resultado de la comparación. El número devuelto es negativo si la primera cadena es lexicográficamente menor que la segunda, o positivo si la segunda es menor que la primera, o 0
si las dos cadenas son idénticas.
Observe que, en el siguiente ejemplo, invertimos el valor de retorno de la función y lo insertamos en la sentencia condicional ?:
para imprimir la salida correspondiente en la consola.
#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);
}
Producción :
strings are not equal
strings are not equal
Utilice la función strncmp
para comparar sólo ciertas partes de las cadenas
strncmp
es otra función útil definida en la cabecera <string.h>
, y puede ser utilizada para comparar sólo varios caracteres del principio de las cadenas.
strncmp
toma el tercer argumento de tipo entero para especificar el número de caracteres a comparar en ambas cadenas. Los valores de retorno de la función son similares a los devueltos por 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);
}
Producción :
strings are equal
Usar las funciones strcasecmp
y strncasecmp
para comparar cadenas ignorando el caso de las letras
La función strcasecmp
se comporta de forma similar a la función strcmp
excepto que ignora el caso de las letras. Esta función es compatible con POSIX y puede utilizarse en varios sistemas operativos junto con strncasecmp
, que implementa la comparación sin tener en cuenta las mayúsculas y minúsculas en el número determinado de caracteres de ambas cadenas. Este último parámetro puede pasarse a la función con el tercer argumento de tipo size_t
.
Tenga en cuenta que los valores de retorno de estas funciones pueden utilizarse directamente en sentencias condicionales.
#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);
}
Producción :
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