logo

C strcmp()

En llenguatge C, el fitxer de capçalera conté la biblioteca de cadenes estàndard que conté algunes funcions de manipulació de cadenes útils i d'ús habitual. En aquest article, veurem com comparar cadenes en C mitjançant la funció strcmp().

Què és strcmp() en C?

C strcmp() és una funció de biblioteca integrada que s'utilitza per a la comparació de cadenes. Aquesta funció pren dues cadenes (matriu de caràcters) com a arguments, compara aquestes dues cadenes lexicogràficament , i després retorna 0,1 o -1 com a resultat. Està definit per dins fitxer de capçalera amb el seu prototip de la següent manera:



Sintaxi de strcmp() en C

strcmp( first_str , second_str );>

Paràmetres de strcmp() a C

Aquesta funció pren dues cadenes (matriu de caràcters) com a paràmetres:

    first_str: la primera cadena es pren com un punter al caràcter constant (és a dir, una cadena immutable). second_str: la segona cadena es pren com un punter a un caràcter constant.

Nota: El motiu pel qual els arguments es prenen com a const char * en comptes de només char * és perquè la funció no pugui modificar la cadena i també fer-los aplicables per a cadenes constants.

Valor de retorn de strcmp() a C

La funció strcmp() retorna tres valors diferents després de la comparació de les dues cadenes que són els següents:



1. Zero ( 0 )

Un valor igual a zero quan es troba que ambdues cadenes són idèntiques. Això és, tots els caràcters de les dues cadenes són iguals.

2. Més gran que zero (> 0 )

Es retorna un valor superior a zero quan el el primer caràcter que no coincideix a first_str té un valor ASCII més gran que el caràcter corresponent a second_str o també podem dir que si el caràcter de first_str està lexicogràficament després del caràcter de second_str, llavors es retorna zero.

3. Menor que zero ( <0 )

Es retorna un valor inferior a zero quan el el primer caràcter que no coincideix a first_str té un valor ASCII menor que el caràcter corresponent a second_str . També podem dir que si el caràcter de first_str està lexicogràficament abans del caràcter de second_str, es retorna zero.



Per obtenir més informació sobre els valors ASCII, consulteu aquest article: Taula ASCII

Com utilitzar la funció strcmp() a C

L'exemple següent mostra com utilitzar la funció 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;> }>

excepció de llançament de java
>

>

Sortida

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

Com funciona strcmp () en C?

La funció C strcmp() funciona comparant el dues cadenes lexicogràficament . Significa que compara el valor ASCII de cada caràcter fins que es troba el valor que no coincideix o es troba el caràcter NULL. El funcionament de la funció C strcmp() es pot descriure de la següent manera:

1. Comença comparant els valors ASCII dels primers caràcters d'ambdues cadenes.

bash si més

2. Si els primers caràcters de les dues cadenes són iguals, aquesta funció comprovarà el segon caràcter, si també són iguals, comprovarà el tercer, i així successivament fins que es trobi el primer caràcter no coincident o el caràcter NULL.

3. Si a S'ha trobat el caràcter NULL , la funció retorna zero ja que les dues cordes seran iguals.

strcmp amb zero com a valor de retorn

4. Si es troba un caràcter que no coincideix,

  • Si el valor ASCII del caràcter de la primera cadena és més gran que el de la segona cadena, aleshores la diferència positiva ( > 0 ) entre els seus valors ASCII es retorna.
strcmp amb valor de retorn positiu
  • Si el valor ASCII del caràcter de la primera cadena és menor que el de la segona cadena, aleshores la diferència negativa (< 0 ) entre els seus valors ASCII es retorna.
strcmp amb valor de retorn negatiu

Tots aquests tres casos es mostren en els exemples següents.

Exemples de strcmp() a C

Exemple 1. Comportament strcmp() per a cadenes idèntiques

Aquest programa il·lustra el comportament de la funció strcmp() per a cadenes idèntiques.

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;> }>

variables globals js
>

>

Sortida

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

Exemple 2. Comportament strcmp() per a la primera cadena lexicogràficament més gran

L'exemple següent mostra el comportament de la funció strcmp() per a la primera cadena lexicogràficament més gran.

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;> }>

>

>

Sortida

Strings are unequal Value of result: 19>

Exemple 3. Comportament strcmp() per a la primera cadena lexicogràficament més petita.

L'exemple següent mostra el comportament de la funció strcmp() per a la primera cadena lexicogràficament més petita.

arbre de cerca binari]

C




// 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;> }>

>

>

Sortida

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

Conclusió

En aquest article, hem parlat de funció de biblioteca estàndard C strcmp() que serveix per comparar dues cadenes lexicogràficament. La biblioteca estàndard conté algunes funcions útils i d'ús freqüent que faciliten la programació, ja que ajuden a evitar reescriure la funció d'ús habitual una vegada i una altra quan sigui necessari.

Preguntes freqüents sobre strcmp() a C

1. Com podem comparar dues cadenes en C?

Anys: Podem utilitzar la funció strcmp() que es defineix dins del fitxer de capçalera per comparar lexicogràficament dues cadenes (matriu de caràcters).

2. Quin és el prototip de funció de strcmp() en C?

Anys: El prototip de funció de la funció strcmp() és el següent:

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

3. Quan la funció strcmp() retorna zero?

Anys: La funció strcmp() retorna zero quan les dues cadenes són idèntiques.

4. Què significa el valor de retorn positiu de la funció strcmp()?

Anys: La funció strcmp() retorna un valor positiu quan la primera cadena és lexicogràficament més gran que la segona.

5. Què significa el valor de retorn negatiu de la funció strcmp()?

Anys: El valor negatiu que retorna la funció strcmp() significa que la primera cadena és lexicogràficament més petita que la segona.

6. Com compara la funció strcmp() dues cadenes en C?

Anys: La funció strcmp() compara els valors ASCII de cada caràcter de les dues cadenes fins que es troba el caràcter que no coincideix o el caràcter NULL.

7. Es pot utilitzar la funció strcmp() per comparar tipus de dades que no són de cadena en C?

Anys: No, la funció strcmp() no pot comparar tipus de dades que no siguin de cadena en C. Només pot comparar el tipus de dades de cadena mutable o immutable que acabe amb un caràcter NULL.

Articles relacionats:

  • Cordes en C
  • Funcions de cadena d'ús habitual en C/C++ amb exemples