logo

C strcmp()

V jazyku C obsahuje hlavičkový súbor knižnicu štandardných reťazcov, ktorá obsahuje niektoré užitočné a bežne používané funkcie na manipuláciu s reťazcami. V tomto článku uvidíme, ako porovnať reťazce v C pomocou funkcie strcmp().

Čo je strcmp() v C?

C strcmp() je vstavaná knižničná funkcia, ktorá sa používa na porovnávanie reťazcov. Táto funkcia berie dva reťazce (pole znakov) ako argumenty, porovnáva tieto dva reťazce lexikograficky a potom vráti 0,1 alebo -1 ako výsledok. Je definovaný vo vnútri hlavičkový súbor s jeho prototypom takto:



Syntax strcmp() v C

strcmp( first_str , second_str );>

Parametre strcmp() v C

Táto funkcia berie ako parametre dva reťazce (súbor znakov):

    first_str: Prvý reťazec sa berie ako ukazovateľ na konštantný znak (t. j. nemenný reťazec). second_str: Druhý reťazec sa berie ako ukazovateľ na konštantný znak.

Poznámka: Dôvod, prečo sa argumenty berú ako const char * namiesto iba char *, je ten, že funkcia nemohla upraviť reťazec a tiež ich urobiť použiteľnými pre konštantné reťazce.

Návratová hodnota strcmp() v C

Funkcia strcmp() vracia tri rôzne hodnoty po porovnaní dvoch reťazcov, ktoré sú nasledovné:



1. nula ( 0 )

Hodnota rovná nule, keď sa zistí, že oba reťazce sú identické. teda všetky znaky v oboch reťazcoch sú rovnaké.

2. Väčšie ako nula (> 0)

Hodnota väčšia ako nula sa vráti, keď prvý nezhodný znak v first_str má väčšiu hodnotu ASCII než zodpovedajúci znak v second_str alebo môžeme tiež povedať, že ak je znak v prvom_str lexikograficky za znakom druhého_str, vráti sa nula.

3. Menšie ako nula ( <0 )

Hodnota menšia ako nula sa vráti, keď prvý nezhodný znak v first_str má menšiu hodnotu ASCII než zodpovedajúci znak v second_str . Môžeme tiež povedať, že ak je znak v prvom_str lexikograficky pred znakom druhého_str, vráti sa nula.



Ak sa chcete dozvedieť viac o hodnotách ASCII, pozrite si tento článok – Tabuľka ASCII

Ako používať funkciu strcmp () v C

Nasledujúci príklad ukazuje, ako používať funkciu strcmp() v jazyku 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;> }>

večera vs večera
>

>

Výkon

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

Ako funguje strcmp() v C?

Funkcia C strcmp() funguje porovnaním dva reťazce lexikograficky . To znamená, že porovnáva hodnotu ASCII každého znaku, kým sa nenájde nezhodná hodnota alebo znak NULL. Fungovanie funkcie C strcmp() možno opísať takto:

1. Začína sa porovnaním ASCII hodnôt prvých znakov oboch reťazcov.

2. Ak sú prvé znaky v oboch reťazcoch rovnaké, potom táto funkcia skontroluje druhý znak, ak sa rovnajú, potom skontroluje tretí a tak ďalej, kým sa nenájde prvý nezhodný znak alebo znak NULL.

3. Ak Bol nájdený znak NULL , funkcia vráti nulu pretože oba reťazce budú rovnaké.

strcmp s nulou ako návratovou hodnotou

4. Ak sa nájde nezodpovedajúci znak,

  • Ak je hodnota ASCII znaku prvého reťazca väčšia ako hodnota druhého reťazca, potom bude kladný rozdiel ( > 0 ) medzi ich ASCII hodnotami sa vráti.
strcmp s kladnou návratovou hodnotou
  • Ak je hodnota ASCII znaku prvého reťazca menšia ako hodnota druhého reťazca, potom bude záporný rozdiel ( < 0 ) medzi ich ASCII hodnotami sa vráti.
strcmp so zápornou návratovou hodnotou

Všetky tieto tri prípady sú demonštrované v nižšie uvedených príkladoch.

Príklady strcmp() v C

Príklad 1. správanie strcmp() pre identické reťazce

Tento program ilustruje správanie funkcie strcmp() pre identické reťazce.

C

algoritmus triedenia vloženia




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

>

>

np nuly
Výkon

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

Príklad 2. správanie strcmp() pre lexikograficky väčší prvý reťazec

Nasledujúci príklad demonštruje správanie funkcie strcmp() pre lexikograficky väčší prvý reťazec.

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

>

>

Výkon

Strings are unequal Value of result: 19>

Príklad 3. správanie strcmp() pre lexikograficky menší prvý reťazec.

Nasledujúci príklad demonštruje správanie funkcie strcmp() pre lexikograficky menší prvý reťazec.

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

>

nahradiť reťazec reťazcom java
>

Výkon

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

Záver

V tomto článku sme diskutovali o Funkcia štandardnej knižnice C strcmp() ktorý sa používa na lexikografické porovnanie dvoch reťazcov. Štandardná knižnica obsahuje niektoré užitočné a často používané funkcie, ktoré uľahčujú programovanie, pretože pomáhajú vyhnúť sa opakovanému prepisovaniu bežne používanej funkcie v prípade potreby.

Časté otázky o strcmp() v C

1. Ako môžeme porovnať dva reťazce v C?

Roky: Na lexikografické porovnanie dvoch reťazcov (súboru znakov) môžeme použiť funkciu strcmp(), ktorá je definovaná v hlavičkovom súbore.

2. Aký je prototyp funkcie strcmp() v C?

Roky: Prototyp funkcie funkcie strcmp() je nasledovný:

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

3. Keď funkcia strcmp() vráti nulu?

Roky: Funkcia strcmp() vráti nulu, keď sú dva reťazce identické.

4. Čo znamená kladná návratová hodnota funkcie strcmp()?

Roky: Funkcia strcmp() vráti kladnú hodnotu, keď je prvý reťazec lexikograficky väčší ako druhý reťazec.

5. Čo znamená záporná návratová hodnota funkcie strcmp()?

Roky: Záporná hodnota vrátená funkciou strcmp() znamená, že prvý reťazec je lexikograficky menší ako druhý reťazec.

6. Ako funkcia strcmp() porovnáva dva reťazce v C?

Roky: Funkcia strcmp() porovnáva hodnoty ASCII každého znaku dvoch reťazcov, kým sa nenájde nezhodný znak alebo znak NULL.

7. Dá sa funkcia strcmp() použiť na porovnanie nereťazcových dátových typov v C?

Roky: Nie, funkcia strcmp() nemôže porovnávať nereťazcové dátové typy v C. Dokáže porovnať iba meniteľný alebo nemenný reťazec dátový typ zakončený znakom NULL.

Súvisiace články:

  • Struny v C
  • Bežne používané funkcie String v C/C++ s príkladmi