logo

C strcmp()

V jazyce C obsahuje soubor záhlaví standardní knihovnu řetězců, která obsahuje některé užitečné a běžně používané funkce pro manipulaci s řetězci. V tomto článku uvidíme, jak porovnat řetězce v C pomocí funkce strcmp().

Co je strcmp() v C?

C strcmp() je vestavěná knihovní funkce, která se používá pro porovnávání řetězců. Tato funkce bere dva řetězce (pole znaků) jako argumenty, porovnává tyto dva řetězce lexikograficky a pak jako výsledek vrátí 0,1 nebo -1. Je definován uvnitř hlavičkový soubor s jeho prototypem takto:



Syntaxe strcmp() v C

strcmp( first_str , second_str );>

Parametry strcmp() v C

Tato funkce bere jako parametry dva řetězce (pole znaků):

    first_str: První řetězec je brán jako ukazatel na konstantní znak (tj. neměnný řetězec). second_str: Druhý řetězec je brán jako ukazatel na konstantní znak.

Poznámka: Důvodem, proč jsou argumenty brány jako const char * namísto pouze char *, je to, že funkce nemohla upravit řetězec a také je učinit použitelnými pro konstantní řetězce.

Návratová hodnota strcmp() v C

Funkce strcmp() vrací tři různé hodnoty po porovnání dvou řetězců, které jsou následující:



1. nula ( 0 )

Hodnota rovna nule, pokud jsou oba řetězce shodné. to znamená, všechny znaky v obou řetězcích jsou stejné.

2. Větší než nula (> 0)

Hodnota větší než nula je vrácena, když je první neodpovídající znak v first_str má větší hodnotu ASCII než odpovídající znak v second_str nebo můžeme také říci, že pokud je znak v first_str lexikograficky za znakem second_str, vrátí se nula.

3. Menší než nula ( <0 )

Hodnota menší než nula je vrácena, když je první neodpovídající znak v first_str má nižší hodnotu ASCII než odpovídající znak v second_str . Můžeme také říci, že pokud je znak v first_str lexikograficky před znakem second_str, vrátí se nula.



Další informace o hodnotách ASCII naleznete v tomto článku – Tabulka ASCII

Jak používat funkci strcmp() v C

Následující příklad ukazuje, jak použít funkci strcmp() v 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;> }>

Hru holub pro android
>

>

Výstup

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

Jak funguje strcmp() v C?

Funkce C strcmp() funguje tak, že porovnává dva řetězce lexikograficky . To znamená, že porovnává ASCII hodnotu každého znaku, dokud není nalezena neodpovídající hodnota nebo znak NULL. Fungování funkce C strcmp() lze popsat následovně:

1. Začíná porovnáním ASCII hodnot prvních znaků obou řetězců.

2. Pokud jsou první znaky v obou řetězcích stejné, pak tato funkce zkontroluje druhý znak, pokud se rovnají, pak zkontroluje třetí a tak dále, dokud není nalezen první neshodný znak nebo znak NULL.

3. Pokud Byl nalezen znak NULL , funkce vrátí nulu protože oba řetězce budou stejné.

strcmp s nulou jako návratovou hodnotou

4. Pokud je nalezen neodpovídající znak,

  • Pokud je hodnota ASCII znaku prvního řetězce větší než hodnota druhého řetězce, kladný rozdíl ( > 0 ) mezi jejich ASCII hodnotami se vrátí.
strcmp s kladnou návratovou hodnotou
  • Pokud je hodnota ASCII znaku prvního řetězce menší než hodnota druhého řetězce, pak záporný rozdíl ( < 0 ) mezi jejich ASCII hodnotami se vrátí.
strcmp se zápornou návratovou hodnotou

Všechny tyto tři případy jsou demonstrovány v níže uvedených příkladech.

Příklady strcmp() v C

Příklad 1. Chování strcmp() pro identické řetězce

Tento program ukazuje chování funkce strcmp() pro identické řetězce.

C




globální var v js

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

>

>

Výstup

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

Příklad 2. Chování strcmp() pro lexikograficky větší první řetězec

Níže uvedený příklad ukazuje chování funkce strcmp() pro lexikograficky větší první řetězec.

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

>

python třídící n-tice

>

Výstup

Strings are unequal Value of result: 19>

Příklad 3. Chování strcmp() pro lexikograficky menší první řetězec.

Níže uvedený příklad ukazuje chování funkce strcmp() pro lexikograficky menší první řetězec.

C




linuxové chybové kódy
// 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;> }>

>

>

Výstup

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

Závěr

V tomto článku jsme diskutovali o Funkce standardní knihovny C strcmp() který se používá k lexikografickému srovnání dvou řetězců. Standardní knihovna obsahuje některé užitečné a často používané funkce, které usnadňují programování, protože pomáhají vyhnout se opakovanému přepisování běžně používané funkce v případě potřeby.

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

1. Jak můžeme porovnat dva řetězce v C?

roky: K lexikografickému porovnání dvou řetězců (souboru znaků) můžeme použít funkci strcmp(), která je definována uvnitř hlavičkového souboru.

2. Jaký je funkční prototyp strcmp() v C?

roky: Prototyp funkce strcmp() je následující:

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

3. Když funkce strcmp() vrátí nulu?

roky: Funkce strcmp() vrátí nulu, když jsou dva řetězce identické.

4. Co znamená kladná návratová hodnota funkce strcmp()?

roky: Funkce strcmp() vrací kladnou hodnotu, když je první řetězec lexikograficky větší než druhý řetězec.

5. Co znamená záporná návratová hodnota funkce strcmp()?

roky: Záporná hodnota vrácená funkcí strcmp() znamená, že první řetězec je lexikograficky menší než druhý řetězec.

6. Jak funkce strcmp() porovnává dva řetězce v C?

roky: Funkce strcmp() porovnává hodnoty ASCII každého znaku ze dvou řetězců, dokud není nalezen neodpovídající znak nebo znak NULL.

7. Lze funkci strcmp() použít k porovnání neřetězcových datových typů v C?

roky: Ne, funkce strcmp() nemůže porovnávat neřetězcové datové typy v C. Může porovnat pouze datový typ proměnlivý nebo neměnný řetězec zakončený znakem NULL.

Související články:

  • Struny v C
  • Běžně používané funkce String v C/C++ s příklady