En el lenguaje C, ¿qué utilizas para comparar cadenas de caracteres? La función strcmp
se usa para comprobar si dos cadenas son iguales, como si le preguntaras al programa: “¿Estas dos son iguales?”. Por supuesto, el programa no puede decidir si un gato o un perro es más adorable, pero al menos sí puede detectar la diferencia entre “HELLO” y “hello”. En este artículo explicaremos cómo funciona strcmp
, cómo utilizarla y los errores más comunes que suelen cometerse.
1. ¿Qué es la función strcmp?
La función strcmp
compara dos cadenas carácter por carácter y devuelve un valor entero como resultado. Su funcionamiento es el siguiente:
- 0: si las cadenas son idénticas
- Valor positivo: si la primera cadena aparece después en el orden alfabético
- Valor negativo: si la primera cadena aparece antes en el orden alfabético
Esta función no solo sirve para comprobar si dos cadenas son iguales, sino también para determinar cuál va primero en orden alfabético. En un programa, puede usarse de la siguiente manera:
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello";
char str2[] = "World";
int result = strcmp(str1, str2);
printf("Resultado de strcmp: %d\n", result);
return 0;
}
Este código compara «Hello» y «World» y muestra el resultado. Un punto importante es que strcmp
distingue entre mayúsculas y minúsculas, por lo que “HELLO” y “hello” se consideran diferentes.
2. Principio de funcionamiento de strcmp
El funcionamiento de strcmp
es sencillo pero potente. Compara los caracteres de ambas cadenas uno a uno desde el inicio, y cuando encuentra una diferencia devuelve la diferencia entre esos caracteres. Este mecanismo también se aplica en comparaciones alfabéticas: por ejemplo, al comparar «apple» con «banana», strcmp
compara primero «a» y «b», devolviendo un valor negativo.
Ejemplo de programa para entender mejor su funcionamiento:
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "apple";
char str2[] = "banana";
int result = strcmp(str1, str2);
if (result == 0) {
printf("Las cadenas son iguales.\n");
} else if (result < 0) {
printf("str1 está antes que str2.\n");
} else {
printf("str1 está después que str2.\n");
}
return 0;
}
Este código compara «apple» con «banana». Como resultado, strcmp
indica que «apple» está antes que «banana» en orden alfabético. Esto resulta muy útil al ordenar listas de cadenas.

3. Ejemplos de uso de strcmp
1. Verificación de entrada del usuario
strcmp
es útil para comparar datos introducidos por el usuario con datos almacenados, como en la verificación de contraseñas.
#include <stdio.h>
#include <string.h>
int main() {
char password[] = "secret";
char input[256];
printf("Introduce la contraseña: ");
scanf("%s", input);
if (strcmp(password, input) == 0) {
printf("La contraseña es correcta.\n");
} else {
printf("Contraseña incorrecta.\n");
}
return 0;
}
Este programa compara la contraseña ingresada con la correcta mediante strcmp
.
2. Orden alfabético
También se puede usar strcmp
para ordenar cadenas en orden alfabético, determinando cuál debe ir primero en la lista.
4. Alternativas a strcmp
Aunque strcmp
es muy útil, en algunos casos es mejor emplear otras funciones.
strncmp: comparación parcial de cadenas
strncmp
permite comparar solo una parte de las cadenas, por ejemplo, los primeros 3 caracteres.
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "apple";
char str2[] = "apricot";
if (strncmp(str1, str2, 3) == 0) {
printf("Los primeros 3 caracteres coinciden.\n");
} else {
printf("Los primeros 3 caracteres no coinciden.\n");
}
return 0;
}
memcmp: comparación de memoria
memcmp
compara bloques de memoria completos, lo que resulta útil al trabajar con datos binarios.
5. Errores comunes
1. Ignorar la diferencia entre mayúsculas y minúsculas
strcmp
distingue entre mayúsculas y minúsculas. Por ejemplo, «HELLO» y «hello» se consideran diferentes. Si necesitas una comparación que ignore el caso, usa strcasecmp
.
2. Comparar punteros NULL
Usar strcmp
con punteros NULL provoca fallos. Es fundamental asegurarse de que las cadenas estén correctamente inicializadas antes de compararlas.
Conclusión
strcmp
es una función clave en C para comparar cadenas de texto de manera sencilla. Ya sea para verificar contraseñas o para ordenar cadenas en orden alfabético, resulta muy práctica. Comprender su funcionamiento y limitaciones es esencial para evitar errores y aprovechar todo su potencial en tus programas en C.