Las cadenas se pueden comparar usando la función de cadena o sin usar la función de cadena. Primero, veremos cómo podemos comparar las cadenas con la ayuda de la función de cadena, es decir, strcmp(), que se define en un cadena.h archivo de cabecera.
Comparación de cadenas mediante el uso de la función de cadena
La función de cadena que está predefinida en un cadena.h El archivo de encabezado es un strcmp() función. La función strcmp() considera dos cadenas como parámetro, y esta función devuelve un valor entero donde el valor entero puede ser cero , positivo o negativo .
La sintaxis de la función strcmp() se proporciona a continuación:
int strcmp (const char* str1, const char* str2);
En la sintaxis anterior, dos parámetros se pasan como cadenas, es decir, str1 y str2 , y el tipo de retorno es En t significa que strcmp() devuelve un valor entero.
La función strcmp() compara el carácter de ambas cadenas. Si el primer carácter de ambas cadenas es el mismo, entonces este proceso de comparación continuará hasta que se comparen todos los caracteres o el puntero apunte al carácter nulo ' '.
Posibles valores de retorno de la función strcmp()
Valor de retorno | Descripción |
---|---|
0 | Cuando ambas cuerdas son iguales. |
<0< td> | Si el valor ASCII de un carácter de la primera cadena es menor que el valor ASCII de un carácter de la segunda cadena, entonces la función devolverá un valor negativo. | 0<>
>0 | Si el valor ASCII de un carácter de la primera cadena es mayor que el valor ASCII de un carácter de la segunda cadena, entonces la función devolverá un valor positivo. |
Entendamos a través de un ejemplo.
#include #include int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array int value; // declaration of integer variable printf('Enter the first string : '); scanf('%s',str1); printf('Enter the second string : '); scanf('%s',str2); // comparing both the strings using strcmp() function value=strcmp(str1,str2); if(value==0) printf('strings are same'); else printf('strings are not same'); return 0; }
Análisis del programa anterior.
- Hemos declarado dos matrices de tipo char, es decir, str1 y str2. Tomamos la entrada del usuario como cadenas.
- Comparamos las cadenas usando el strcmp() función, es decir, strcmp(cadena1,cadena2). Esta función comparará las cadenas str1 y str2. Si la función devuelve un valor 0 significa que ambas cadenas son iguales; de lo contrario, las cadenas no son iguales.
Producción:
Comparación de cadenas sin usar la función strcmp()
#include int compare(char[],char[]); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf('Enter the first string : '); scanf('%s',str1); printf('Enter the second string : '); scanf('%s',str2); int c= compare(str1,str2); // calling compare() function if(c==0) printf('strings are same'); else printf('strings are not same'); return 0; } // Comparing both the strings. int compare(char a[],char b[]) { int flag=0,i=0; // integer variables declaration while(a[i]!=' ' &&b[i]!=' ') // while loop { if(a[i]!=b[i]) { flag=1; break; } i++; } if(flag==0) return 0; else return 1; }
Análisis del programa anterior.
- En lo anterior, hemos declarado dos matrices de tipo char y tomamos la entrada del usuario como cadenas.
- Hemos definido una función compare() que tomará las cadenas de entrada del usuario como parámetro y comparará ambas cadenas. Si la función devuelve 0, significa que ambas cadenas son iguales; de lo contrario, ambas cadenas no son iguales. .
Producción:
Comparación de cadenas mediante el uso de punteros
#include int stringcompare(char*,char*); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf('Enter the first string : '); scanf('%s',str1); printf(' Enter the second string : '); scanf('%s',str2); int compare=stringcompare(str1,str2); // calling stringcompare() function. if(compare==0) printf('strings are equal'); else printf('strings are not equal'); return 0; } // Comparing both the strings using pointers int stringcompare(char *a,char *b) { int flag=0; while(*a!=' ' && *b!=' ') // while loop { if(*a!=*b) { flag=1; } a++; b++; } if(flag==0) return 0; else return 1; }
Análisis del programa anterior.
- Hemos creado dos matrices de tipo char str1 y str2. Tomamos la entrada del usuario como cadenas.
- Hemos definido una función stringcompare() que tomará dos punteros de tipo char como parámetro. El puntero 'a' contiene la dirección de str1 y el puntero 'b' contiene la dirección de str2. Dentro de la función, hemos creado un bucle while que se ejecutará hasta que el puntero aob no alcance un carácter nulo.
Producción: