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é.
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.
- 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.
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 nulyVý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