logo

C strcmp()

En lenguaje C, el archivo de encabezado contiene la biblioteca de cadenas estándar que contiene algunas funciones de manipulación de cadenas útiles y de uso común. En este artículo veremos cómo comparar cadenas en C usando la función strcmp().

¿Qué es strcmp() en C?

C strcmp() es una función de biblioteca incorporada que se utiliza para comparar cadenas. Esta función toma dos cadenas (matriz de caracteres) como argumentos, compara estas dos cadenas lexicográficamente y luego devuelve 0,1 o -1 como resultado. esta definido por dentro archivo de encabezado con su prototipo de la siguiente manera:



Sintaxis de strcmp() en C

strcmp( first_str , second_str );>

Parámetros de strcmp() en C

Esta función toma dos cadenas (matriz de caracteres) como parámetros:

    first_str: la primera cadena se toma como un puntero al carácter constante (es decir, una cadena inmutable). second_str: la segunda cadena se toma como puntero a un carácter constante.

Nota: La razón por la que los argumentos se toman como const char * en lugar de solo char * es para que la función no pueda modificar la cadena y también hacerlos aplicables para cadenas constantes.

Valor de retorno de strcmp() en C

La función strcmp() devuelve tres valores diferentes después de la comparación de las dos cadenas, que son los siguientes:



1. Cero ( 0 )

Un valor igual a cero cuando ambas cadenas son idénticas. Eso es, Todos los caracteres en ambas cadenas son iguales.

2. Mayor que cero (> 0 )

Se devuelve un valor mayor que cero cuando el El primer carácter que no coincide en first_str tiene un valor ASCII mayor. que el carácter correspondiente en second_str o también podemos decir que si el carácter de first_str está lexicográficamente después del carácter de second_str, entonces se devuelve cero.

3. Menor que cero (<0)

Se devuelve un valor menor que cero cuando el El primer carácter que no coincide en first_str tiene un valor ASCII menor. que el carácter correspondiente en second_str . También podemos decir que si el carácter de first_str está lexicográficamente antes que el carácter de second_str, se devuelve cero.



Para saber más sobre los valores ASCII, consulte este artículo: Tabla ASCII

Cómo utilizar la función strcmp() en C

El siguiente ejemplo demuestra cómo utilizar la función strcmp() en C:

C




// C Program to Demonstrate the use of strcmp() function> #include> #include> int> main()> {> >// declaring two same string> >char>* first_str =>'Geeks'>;> >char>* second_str =>'Geeks'>;> >// printing the strings> >printf>(>'First String: %s '>, first_str);> >printf>(>'Second String: %s '>, second_str);> >// printing the return value of the strcmp()> >printf>(>'Return value of strcmp(): %d'>,> >strcmp>(first_str, second_str));> >return> 0;> }>

comando chown
>

>

Producción

First String: Geeks Second String: Geeks Return value of strcmp(): 0>

¿Cómo funciona strcmp() en C?

La función C strcmp() funciona comparando el dos cadenas lexicográficamente . Significa que compara el valor ASCII de cada carácter hasta que se encuentra el valor que no coincide o se encuentra el carácter NULL. El funcionamiento de la función C strcmp() se puede describir de la siguiente manera:

1. Comienza comparando los valores ASCII de los primeros caracteres de ambas cadenas.

2. Si los primeros caracteres en ambas cadenas son iguales, entonces esta función verificará el segundo carácter, si también son iguales, verificará el tercero, y así sucesivamente hasta que se encuentre el primer carácter no coincidente o se encuentre el carácter NULL.

3. si un Se encuentra el carácter NULO , la función devuelve cero ya que ambas cadenas serán iguales.

javascript global variable
strcmp con cero como valor de retorno

4. Si se encuentra un carácter que no coincide,

  • Si el valor ASCII del carácter de la primera cadena es mayor que el de la segunda cadena, entonces la diferencia positiva ( > 0 ) entre sus valores ASCII.
strcmp con valor de retorno positivo
  • Si el valor ASCII del carácter de la primera cadena es menor que el de la segunda cadena, entonces la diferencia negativa (< 0 ) entre sus valores ASCII.
strcmp con valor de retorno negativo

Estos tres casos se demuestran en los siguientes ejemplos.

Ejemplos de strcmp() en C

Ejemplo 1. Comportamiento de strcmp() para cadenas idénticas

Este programa ilustra el comportamiento de la función strcmp() para cadenas idénticas.

C




// C program to illustrate> // strcmp() function> #include> #include> int> main()> {> > >char> first_str[] =>'g f g'>;> >char> second_str[] =>'g f g'>;> > >// Using strcmp()> >int> res =>strcmp>(first_str, second_str);> > >if> (res==0)> >printf>(>'Strings are equal'>);> >else> >printf>(>'Strings are unequal'>);> > >printf>(>' Value returned by strcmp() is: %d'> , res);> >return> 0;> }>

>

lanzamiento de excepción java

>

Producción

Strings are equal Value returned by strcmp() is: 0>

Ejemplo 2. Comportamiento de strcmp() para la primera cadena lexicográficamente mayor

El siguiente ejemplo demuestra el comportamiento de la función strcmp() para la primera cadena lexicográficamente mayor.

C




// C program to illustrate> // strcmp() function> #include> #include> int> main()> {> >// z has greater ASCII value than g> >char> first_str[] =>'zfz'>;> >char> second_str[] =>'gfg'>;> > >int> res =>strcmp>(first_str, second_str);> > >if> (res==0)> >printf>(>'Strings are equal'>);> >else> >printf>(>'Strings are unequal'>);> > >printf>(>' Value of result: %d'> , res);> > >return> 0;> }>

>

>

Producción

Strings are unequal Value of result: 19>

Ejemplo 3. Comportamiento de strcmp() para la primera cadena lexicográficamente más pequeña.

El siguiente ejemplo demuestra el comportamiento de la función strcmp() para la primera cadena lexicográficamente más pequeña.

C


ipconfig libre de Linux



// C program to illustrate> // strcmp() function> #include> #include> int> main()> {> >// b has less ASCII value than g> >char> first_str[] =>'bfb'>;> >char> second_str[] =>'gfg'>;> > >int> res =>strcmp>(first_str, second_str);> > >if> (res==0)> >printf>(>'Strings are equal'>);> >else> >printf>(>'Strings are unequal'>);> > >printf>(>' Value returned by strcmp() is: %d'> , res);> > > >return> 0;> }>

>

>

Producción

Strings are unequal Value returned by strcmp() is: -5>

Conclusión

En este artículo, discutimos el Función de biblioteca estándar C strcmp() que se utiliza para comparar dos cadenas lexicográficamente. La biblioteca estándar contiene algunas funciones útiles y de uso frecuente que facilitan la programación, ya que ayudan a evitar reescribir la función de uso común una y otra vez cuando sea necesario.

Preguntas frecuentes sobre strcmp() en C

1. ¿Cómo podemos comparar dos cadenas en C?

Años: Podemos usar la función strcmp() que se define dentro del archivo de encabezado para comparar lexicográficamente dos cadenas (matriz de caracteres).

2. ¿Cuál es el prototipo de función de strcmp() en C?

Años: El prototipo de función de la función strcmp() es el siguiente:

int strcmp(const char* lhs , const char* rhs );>

3. ¿Cuándo la función strcmp() devuelve cero?

Años: La función strcmp() devuelve cero cuando las dos cadenas son idénticas.

4. ¿Qué significa el valor de retorno positivo de la función strcmp()?

Años: La función strcmp() devuelve un valor positivo cuando la primera cadena es lexicográficamente mayor que la segunda cadena.

5. ¿Qué significa el valor de retorno negativo de la función strcmp()?

Años: El valor negativo devuelto por la función strcmp() significa que la primera cadena es lexicográficamente más pequeña que la segunda cadena.

6. ¿Cómo compara la función strcmp() dos cadenas en C?

Años: La función strcmp() compara los valores ASCII de cada carácter de las dos cadenas hasta que se encuentra el carácter que no coincide o el carácter NULL.

7. ¿Se puede utilizar la función strcmp() para comparar tipos de datos que no son cadenas en C?

Años: No, la función strcmp() no puede comparar tipos de datos que no sean cadenas en C. Solo puede comparar el tipo de datos de cadena mutable o inmutable que termina con un carácter NULL.

Artículos relacionados:

  • Cuerdas en C
  • Funciones de cadena de uso común en C/C++ con ejemplos