Una operaci n importante cuando se trabaja con texto es comparar cadenas. En el lenguaje de programaci n C, se pueden comparar cadenas de varias maneras, que dependen de la l gica requerida y las caracter sticas de una tarea espec fica.
En este art culo, veremos algunos ejemplos y m todos de comparaci n de cadenas en el lenguaje C. Echaremos un vistazo m s de cerca al uso de la funci n strcmp(), que es la funci n est ndar de la biblioteca C para comparar cadenas.
strcmp () compara dos cadenas y devuelve un entero que muestra la relaci n entre las cadenas. Si el resultado es 0, significa que las cadenas son id nticas. Si el resultado es menor que 0, significa que la primera l nea es menor que la segunda. Si el resultado es mayor que 0, significa que la primera l nea es mayor que la segunda.
Adem s de strcmp (), la comparaci n de cadenas se puede hacer usando operadores de comparaci n ( = = ,!=, <,>, <>=). Es importante recordar que cuando se usan operadores de comparaci n, solo se comparar la direcci n de Inicio de la cadena, no su contenido. Por lo tanto, al comparar cadenas, es importante recordar usar fclose () para comparar los valores de los caracteres de la cadena, no sus direcciones.
- Principio
- M todos de comparaci n de caracteres
- M todos de comparaci n de cadenas
- El concepto de comparaci n lexicogr fica de cadenas
- Ejemplos de comparaci n de cadenas
- M todos de la biblioteca est ndar de C para comparar cadenas
- Pregunta-respuesta
- C mo comparar dos cadenas en C?
- Qu otros m todos de comparaci n de cadenas hay en C?
- C mo comparar cadenas sin may sculas y min sculas?
- Es posible comparar cadenas usando operadores de comparaci n(por ejemplo, = = o>)?
- Qu pasa si las cadenas tienen diferentes longitudes?
Principio
La comparaci n de cadenas en el lenguaje de programaci n C es una de las operaciones b sicas. Le permite determinar si dos l neas son iguales entre s o qu l nea va delante de la otra alfab ticamente.
Para comparar cadenas en C, se utilizan diferentes m todos que se pueden dividir en dos categor as principales: m todos de comparaci n de caracteres y m todos de comparaci n de cadenas.
M todos de comparaci n de caracteres
El lenguaje C utiliza un enfoque de codificaci n de caracteres ASCII, donde cada car cter tiene un valor num rico. La comparaci n de caracteres se realiza comparando sus valores num ricos. Para hacer esto, puede usar operadores de comparaci n (,=) que comparan los valores num ricos de los caracteres.
Por ejemplo, si desea comparar dos cadenas por igualdad, puede comparar cada car cter de cadena en orden. Si en el proceso de comparaci n se encuentra un car cter para el cual el valor num rico en la primera l nea no es igual al valor num rico en la segunda l nea, entonces las l neas no son iguales.
M todos de comparaci n de cadenas
.
compara dos cadenas y devuelve un entero que muestra qu cadena va antes que la otra. Si el resultado de la comparaci n es cero, las cadenas se consideran iguales. Si el resultado de la comparaci n es negativo, la primera l nea va antes de la segunda l nea en orden alfab tico. Si el resultado de la comparaci n es positivo, entonces la segunda l nea va antes de la primera l nea en orden alfab tico.
compara un n mero limitado de caracteres especificado por el par metro en lugar de una cadena completa. Esto le permite comparar los Primeros n caracteres de dos cadenas.
Ambos m todos de comparaci n de cadenas se pueden utilizar dependiendo de los requisitos de una tarea espec fica.
El concepto de comparaci n lexicogr fica de cadenas
La comparaci n lexicogr fica de cadenas es un m todo para comparar cadenas en funci n de su orden l xico. En la comparaci n lexicogr fica, las cadenas se comparan car cter por car cter, comenzando con el primer car cter. Si los primeros caracteres coinciden, se comparan los siguientes caracteres, y as sucesivamente hasta que se encuentra la diferencia.
Para realizar una comparaci n lexicogr fica de cadenas en el lenguaje de programaci n C, se utiliza la funci n strcmp(). Esta funci n toma dos cadenas como argumentos y devuelve un entero que muestra la relaci n entre las cadenas:
- Si el resultado es 0, significa que ambas cadenas son id nticas.
- Si el resultado es negativo, significa que la primera l nea es menor que la segunda.
- Si el resultado es positivo, significa que la primera l nea es mayor que la segunda.
Ejemplo de uso de la funci n strcmp ():
#include
#include
int main() {
char str1[] = "abc";
char str2[] = "abcd";
int result = strcmp(str1, str2);
if(result == 0) {
printf ("las Filas son iguales
");
}
else if(result < 0) {
printf ("La primera l nea es menor que la segunda
");
}
else {
printf ("La primera l nea es mayor que la segunda
");
}
return 0;
}
En este ejemplo, la funci n strcmp () compara las cadenas "abc" y "abcd". Dado que la primera l nea es m s corta, el resultado ser un n mero negativo y se mostrar "La primera l nea es menor que la segunda"en la pantalla.
La comparaci n lexicogr fica de cadenas puede ser til en muchos casos, como al ordenar cadenas o al buscar cadenas en orden alfab tico.
Ejemplos de comparaci n de cadenas
En el lenguaje de programaci n C, la comparaci n de cadenas se realiza mediante las funciones strcmp () y strncmp (). Ambas funciones devuelven un valor que muestra la relaci n entre las dos filas comparadas.
La funci n strcmp () se usa para comparar dos cadenas al primer car cter diferente en ellas. Al comparar cadenas, se aplica un orden lexicogr fico, es decir, se comparan los valores de los c digos de caracteres ASCII.
strcmp().
#include
#include
int main() {
char str1[50], str2[50];
printf(" : ");
gets(str1);
printf(" : ");
gets(str2);
int result = strcmp(str1, str2);
if(result == 0) {
printf(" ");
} else if(result < 0) {
printf(" 1 2");
} else {
printf(" 1 2");
}
return 0;
}
Si dos cadenas son iguales, strcmp () devuelve cero. Si la primera l nea es menor que la segunda, se devuelve un valor negativo. Si la primera l nea es mayor que la segunda, se devuelve un valor positivo.
La funci n strncmp () se usa para comparar dos cadenas, pero con la definici n del n mero m ximo de caracteres que se comparan.
A continuaci n se muestra un ejemplo del uso de la funci n strncmp ().
#include
#include
int main() {
char str1[50], str2[50];
printf ("Ingrese la primera l nea: ");
gets(str1);
printf ("Ingrese la segunda l nea: ");
gets(str2);
int result = strncmp(str1, str2, 4);
if(result == 0) {
printf ("los Primeros 4 caracteres de las l neas son iguales");
} else if(result < 0) {
printf ("los Primeros 4 caracteres de la l nea 1 son menores que los primeros 4 caracteres de la l nea 2");
} else {
printf ("los Primeros 4 caracteres de la l nea 1 son mayores que los primeros 4 caracteres de la l nea 2");
}
return 0;
}
En el ejemplo anterior, la funci n strncmp () compara los primeros 4 caracteres de dos cadenas. Si los primeros 4 caracteres son iguales, se devuelve cero. Si los primeros 4 caracteres de la l nea 1 son menores que los primeros 4 caracteres de la l nea 2, se devuelve un valor negativo. Si los primeros 4 caracteres de la l nea 1 son mayores que los primeros 4 caracteres de la l nea 2, se devuelve un valor positivo.
Ahora sabe c mo comparar cadenas en el lenguaje de programaci n C usando las funciones strcmp() y strncmp().
M todos de la biblioteca est ndar de C para comparar cadenas
La biblioteca est ndar de C proporciona varios m todos para comparar cadenas. Estos son algunos de ellos:
- strcasecmp: este m todo compara dos cadenas sin distinguir entre may sculas y min sculas. Devuelve el mismo valor que strcmp, pero distingue entre may sculas y min sculas. Por ejemplo:
// result ser nulo ya que las cadenas " AbC " y " aBc " son iguales
strncasecmp: Este m todo compara el n mero especificado de caracteres en dos cadenas sin distinguir entre may sculas y min sculas. Devuelve el mismo valor que strcmp, pero solo compara el n mero especificado de caracteres y distingue entre may sculas y min sculas. Por ejemplo:
char str1[] = "AbC";
char str2[] = "aBcD";
int result = strncasecmp(str1, str2, 3);
// result ser nulo ya que las cadenas " AbC " y " aBc " son iguales