logo

C strcmp()

V jeziku C datoteka glave vsebuje standardno knjižnico nizov, ki vsebuje nekaj uporabnih in pogosto uporabljenih funkcij za manipulacijo nizov. V tem članku bomo videli, kako primerjati nize v C s funkcijo strcmp().

Kaj je strcmp() v C?

C strcmp() je vgrajena funkcija knjižnice, ki se uporablja za primerjavo nizov. Ta funkcija sprejme dva niza (niz znakov) kot argumenta, ta dva niza leksikografsko primerja , nato pa kot rezultat vrne 0,1 ali -1. Določeno je znotraj datoteka glave s svojim prototipom, kot sledi:



Sintaksa strcmp() v C

strcmp( first_str , second_str );>

Parametri strcmp() v C

Ta funkcija sprejme dva niza (niz znakov) kot parametra:

    first_str: prvi niz se vzame kot kazalec na stalni znak (tj. nespremenljiv niz). second_str: drugi niz je vzet kot kazalec na stalni znak.

Opomba: Razlog, zakaj so argumenti vzeti kot const char * namesto samo char *, je ta, da funkcija ni mogla spremeniti niza in jih narediti uporabnih za konstantne nize.

Vrnjena vrednost strcmp() v C

Funkcija strcmp() po primerjavi dveh nizov vrne tri različne vrednosti, ki so naslednje:



1. Nič ( 0 )

Vrednost enaka nič, če se ugotovi, da sta oba niza enaka. to je vsi znaki v obeh nizih so enaki.

2. Večje od nič (> 0)

Vrednost, večja od nič, je vrnjena, ko je prvi neujemajoči znak v first_str ima večjo vrednost ASCII kot ustrezen znak v second_str lahko pa tudi rečemo, da če je znak v first_str leksikografsko za znakom second_str, je vrnjena ničla.

3. Manj kot nič ( <0)

Vrednost, manjša od nič, je vrnjena, ko je prvi neujemajoči znak v first_str ima nižjo vrednost ASCII kot ustrezen znak v second_str . Lahko tudi rečemo, da če je znak v first_str leksikografsko pred znakom second_str, se vrne nič.



Če želite izvedeti več o vrednostih ASCII, glejte ta članek – Tabela ASCII

Kako uporabljati funkcijo strcmp() v C

Naslednji primer prikazuje, kako uporabiti funkcijo 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;> }>

igra pigeon android
>

>

igralec govinda
Izhod

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

Kako deluje strcmp() v C?

Funkcija C strcmp() deluje tako, da primerja dva niza leksikografsko . To pomeni, da primerja vrednost ASCII vsakega znaka, dokler ne najde neujemajoče se vrednosti ali dokler ne najde znaka NULL. Delovanje funkcije C strcmp() je mogoče opisati na naslednji način:

1. Začne se s primerjavo vrednosti ASCII prvih znakov obeh nizov.

2. Če sta prva znaka v obeh nizih enaka, bo ta funkcija preverila drugi znak, če sta prav tako enaka, bo preverila tretjega in tako naprej, dokler ni najden prvi neujemajoči se znak ali znak NULL.

3. Če Najden je znak NULL , funkcija vrne nič saj bosta oba niza enaka.

strcmp z ničlo kot vrnjeno vrednostjo

4. Če je najden znak, ki se ne ujema,

  • Če je vrednost ASCII znaka prvega niza večja od vrednosti drugega niza, potem je pozitivna razlika ( > 0 ) med njihovimi vrednostmi ASCII.
strcmp s pozitivno vrnjeno vrednostjo
  • Če je vrednost ASCII znaka prvega niza manjša od vrednosti drugega niza, potem je negativna razlika ( < 0 ) med njihovimi vrednostmi ASCII.
strcmp z negativno vrnjeno vrednostjo

Vsi ti trije primeri so prikazani v spodnjih primerih.

Primeri strcmp() v C

Primer 1. vedenje strcmp() za enake nize

Ta program ponazarja vedenje funkcije strcmp() za enake nize.

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

>

>

Izhod

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

Primer 2. vedenje strcmp() za leksikografsko večji prvi niz

Spodnji primer prikazuje vedenje funkcije strcmp() za leksikografsko večji prvi niz.

C


funkcija podniza java



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

>

>

Izhod

Strings are unequal Value of result: 19>

Primer 3. vedenje strcmp() za leksikografsko manjši prvi niz.

Spodnji primer prikazuje vedenje funkcije strcmp() za leksikografsko manjši prvi niz.

C




gumb tkinter

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

>

>

Izhod

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

Zaključek

V tem članku smo razpravljali o Funkcija standardne knjižnice C strcmp() ki se uporablja za leksikografsko primerjavo dveh nizov. Standardna knjižnica vsebuje nekaj uporabnih in pogosto uporabljenih funkcij, ki olajšajo programiranje, saj se izognejo ponovnemu pisanju pogosto uporabljene funkcije, kadar je to potrebno.

Pogosta vprašanja o strcmp() v C

1. Kako lahko primerjamo dva niza v C?

leta: Za leksikografsko primerjavo dveh nizov (niza znakov) lahko uporabimo funkcijo strcmp(), ki je definirana znotraj datoteke glave.

2. Kakšen je prototip funkcije strcmp() v C?

leta: Prototip funkcije funkcije strcmp() je naslednji:

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

3. Ko funkcija strcmp() vrne nič?

leta: Funkcija strcmp() vrne nič, če sta niza enaka.

4. Kaj pomeni pozitivna vrnjena vrednost funkcije strcmp()?

leta: Funkcija strcmp() vrne pozitivno vrednost, ko je prvi niz leksikografsko večji od drugega niza.

5. Kaj pomeni negativna vrnjena vrednost funkcije strcmp()?

leta: Negativna vrednost, ki jo vrne funkcija strcmp(), pomeni, da je prvi niz leksikografsko manjši od drugega niza.

6. Kako funkcija strcmp() primerja dva niza v C?

leta: Funkcija strcmp() primerja vrednosti ASCII vsakega znaka obeh nizov, dokler ni najden neujemajoči se znak ali znak NULL.

7. Ali je mogoče uporabiti funkcijo strcmp() za primerjavo tipov podatkov, ki niso nizi, v C?

leta: Ne, funkcija strcmp() ne more primerjati neniznih podatkovnih tipov v C. Primerja lahko le spremenljive ali nespremenljive nizovne podatkovne vrste, ki se končajo z znakom NULL.

Povezani članki:

  • Nizi v C
  • Pogosto uporabljene funkcije niza v C/C++ s primeri