PUBLICIDAD


Comparación de cadenas con función strcmp - Programación en C


Introducción

En muchas ocasiones es necesario comparar cadenas de caracteres para determinar si son iguales o si hay diferencia. En este artículo analizaremos la función “strcmp” y sus derivados, cómo utilizarla y algunos ejemplospara que sea más fácil su comprensión.

Marco teórico

Cabe señalar que para el uso de las siguientes funciones es necesario incluir la librería “string.h

strcmp: Función que sirve para comparar dos cadenas de caracteres, si las cadenas son iguales te devolverá un “0”, si la primer cadena es menor que la segunda devolverá un número negativo y finalmente si la primer cadena es mayor que la segunda devolverá un numero positivo. La sintaxis para utilizar la función es la siguiente:

Código:

strcmp(cadena1, cadena2);

¿Cómo determina cual cadena es mayor o menor? Pues bien, el sistema ASCII determina que cada caracter tiene un valor numérico (binario, decimal, hexadecimal), lo que hace más fácil que se pueda comparar. La función trabaja de la siguiente manera: Compara (Resta) carácter por carácter de la primer cadena a la segunda cadena, en cuanto detecta una diferencia de caracteres (Es decir, la resta no sea 0) detiene la operación, y devuelve un numero positivo o negativo.

Esta función tiene como característica principal que sí reconoce diferencias entre letras mayúsculas y minúsculas, por lo tanto, si comparamos “Juan” con “juan”, las cadenas serán diferentes.


strncmp: Tiene la misma función que “strcmp”, comparar dos cadenas de caracteres y determinar si son iguales, con la única diferencia de que a esta función se le especifica una cantidad de caracteres a comparar. La sintaxis para utilizar la función es la siguiente:

Código:

strncmp(cadena1, cadena2, numero);

Donde “numero” es la cantidad de caracteres que queremos comparar. Por ejemplo, si tenemos la primer cadena con el valor “Comprar comida” y la segunda cadena con el valor “Comprar juego”, y le decimos que solo compare los primeros 7 caracteres, solo comparará “Comprar” y nos devolverá que las cadenas son iguales. Esta función también es sensible a mayúsculas y minúsculas.


stricmp: Función que sirve para comparar dos cadenas de caracteres, devolviendo un valor de 0 si son iguales. La característica principal de esta función es que NO es sensible ante mayúsculas y minúsculas, por ejemplo, no encontrará diferencia entre “Carlos” y “carlos”. La sintaxis para utilizar la función es la siguiente:

Código:

stricmp(cadena1, cadena2);


strnicmp: Tiene la misma función que “stricmp”, comparar dos cadenas de caracteres y determinar si son iguales sin ser sensibles a mayúsculas y minúsculas, con la única diferencia de que a esta función se le especifica una cantidad de caracteres a comparar. La sintaxis para utilizar la función es la siguiente:

Código:

stricmp(cadena1, cadena2, numero);

Donde “numero” es la cantidad de caracteres que queremos comparar. Por ejemplo, si tenemos la primer cadena con el valor “Jugar futbol” y la segunda cadena con el valor “jugar básquetbol”, y le decimos que solo compare los primeros 5 caracteres, solo comparará “Jugar” y nos devolverá que las cadenas son iguales, pues tampoco es sensible a mayúsculas o minúsculas.


Publicidad


Ejemplos

Ejercicio 1: Realizar un programa donde el usuario pueda ingresar dos cadenas de caracteres (limitado a 20 caracteres) y posteriormente compararlas para determinar si son iguales o no utilizando la función strcmp.

Código:

/* Ejemplo de uso de función "strcmp" - Por Solución Ingenieril*/
#include <stdio.h> /* Declaración librerías*/
#include <stdlib.h>
#include <string.h>

int main() {
	char cadena1[20]=""; //Declaramos nuestras cadenas con límite de caracteres
	char cadena2[20]=""; 
	
	printf("Introduce la primer cadena: ");
	fgets(cadena1, 20, stdin); //Capturamos la primer cadena
	printf("\n");
	printf("Introduce la segunda cadena: ");
	fgets(cadena2, 20, stdin); //Capturamos la segunda cadena
	
	if(strcmp(cadena1, cadena2)==0) //Comparamos si cadena1 es igual a cadena2
		printf("Son iguales");
	else
		printf("No son iguales");
		
	return 0;
}


Ejercicio 2: Realizar un programa donde el usuario pueda ingresar dos cadenas de caracteres (limitado a 20 caracteres) y posteriormente compararlas para determinar si son iguales o no, utilizando la función strncmp e indicándole que solo compare los primeros 6 caracteres.

Código:

/* Ejemplo de uso de función "strncmp" - Por Solución Ingenieril*/
#include <stdio.h> /* Declaración librerías*/
#include <stdlib.h>
#include <string.h>

int main() {
	char cadena1[20]=""; //Declaramos nuestras cadenas con límite de caracteres
	char cadena2[20]=""; 
	
	printf("Introduce la primer cadena: ");
	fgets(cadena1, 20, stdin); //Capturamos la primer cadena
	printf("\n");
	printf("Introduce la segunda cadena: ");
	fgets(cadena2, 20, stdin); //Capturamos la segunda cadena
	
	if(strncmp(cadena1, cadena2, 6)==0) //Comparamos si los primeros 6 caracteres de cadena1 son iguales a cadena2
		printf("Son iguales");
	else
		printf("No son iguales");
		
	return 0;
}


Ejercicio 3: Realizar un programa donde el usuario pueda ingresar dos cadenas de caracteres (limitado a 20 caracteres) y posteriormente compararlas para determinar si son iguales o no, utilizando la función stricmp, sin importar si sean mayúsculas o minúsculas.

Código:

/* Ejemplo de uso de función "stricmp" - Por Solución Ingenieril*/
#include <stdio.h> /* Declaración librerías*/
#include <stdlib.h>
#include <string.h>

int main() {
	char cadena1[20]=""; //Declaramos nuestras cadenas con límite de caracteres
	char cadena2[20]=""; 
	
	printf("Introduce la primer cadena: ");
	fgets(cadena1, 20, stdin); //Capturamos la primer cadena
	printf("\n");
	printf("Introduce la segunda cadena: ");
	fgets(cadena2, 20, stdin); //Capturamos la segunda cadena
	
	if(stricmp(cadena1, cadena2)==0) //Comparamos si cadena1 es igual a cadena2, sin importar mayúsculas o minúsculas
		printf("Son iguales");
	else
		printf("No son iguales");
		
	return 0;
}


Ejercicio 4: Realizar un programa donde el usuario pueda ingresar dos cadenas de caracteres (limitado a 20 caracteres) y posteriormente compararlas para determinar si son iguales o no utilizando la función strnicmp, indicándole que solo compare los primeros 6 caracteres y que no sea sensible a mayúsculas y minúsculas.

Código:

/* Ejemplo de uso de función "strnicmp" - Por Solución Ingenieril*/
#include <stdio.h> /* Declaración librerías*/
#include <stdlib.h>
#include <string.h>

int main() {
	char cadena1[20]=""; //Declaramos nuestras cadenas con límite de caracteres
	char cadena2[20]=""; 
	
	printf("Introduce la primer cadena: ");
	fgets(cadena1, 20, stdin); //Capturamos la primer cadena
	printf("\n");
	printf("Introduce la segunda cadena: ");
	fgets(cadena2, 20, stdin); //Capturamos la segunda cadena
	
	if(strnicmp(cadena1, cadena2, 6)==0) //Comparamos si los primeros 6 caracteres de cadena1 son iguales a cadena2, sin importar si sin mayúsculas o minúsculas
		printf("Son iguales");
	else
		printf("No son iguales");
		
	return 0;
}


Resultados

Ejercicio 1: Como podemos observar, con la función “strcmp” la cadena tiene que ser exactamente igual para que detecte que son iguales, si cambia algo, aunque sea que una letra sea mayúscula, detectará que no son iguales.

Comparación de cadenas con función strcmp - 1

Comparación de cadenas con función strcmp - 2

Ejercicio 2: Como podemos observar, en el primer caso detectó que eran iguales aunque toda la cadena no era igual, porque solamente comparó los primeros 6 caracteres con la función “strncmp”. En el segundo caso si detectó que la cadena era diferente, pues los primeros 6 caracteres son distintos.

Comparación de cadenas con función strcmp - 3

Comparación de cadenas con función strcmp - 4

Ejercicio 3: Notamos que, en el primer caso detectó que eran iguales pues la función “stricmp” no es sensible a mayúsculas y minúsculas. El segundo caso, al ser totalmente diferente, si detectó que no son iguales.

Comparación de cadenas con función strcmp - 5

Comparación de cadenas con función strcmp - 6

Ejercicio 4: Notamos que, en el primer caso detectó que eran iguales pues la función “strnicmp” no es sensible a mayúsculas y minúsculas y comparó solo los primeros 6 caracteres. El segundo caso, al cambiar la segunda palabra desde su primer caracter, detectó una diferencia.

Comparación de cadenas con función strcmp - 7

Comparación de cadenas con función strcmp - 8

Conclusión

Aprender a comparar cadenas de caracteres es algo fundamental en la programación, pues nos encontraremos con muchos programas que requerirán estas características. En este artículo analizamos 4 maneras distintas de comparar cadenas de caracteres y analizamos algunos ejercicios para saber cómo utilizarlas.






Agregar comentario
1500
¿Cual es el siguiente número: 2,4,6, ..?
Comentarios
(1)
Gravatar
Jhon Moncada dice...

Muchas gracias por la información compartida, me ayudo a comprender mucho mejor la función strcmp(), saludos desde Lima - Perú

©2017-2021 Solución Ingenieril. Todos los derechos reservados