logo

C strcmp()

C kalba antraštės faile yra standartinė eilučių biblioteka, kurioje yra keletas naudingų ir dažniausiai naudojamų eilučių manipuliavimo funkcijų. Šiame straipsnyje pamatysime, kaip palyginti C eilutes naudojant funkciją strcmp ().

Kas yra strcmp () C?

C strcmp () yra integruota bibliotekos funkcija, naudojama eilučių palyginimui. Ši funkcija kaip argumentus naudoja dvi eilutes (simbolių masyvą), lygina šias dvi eilutes leksikografiškai , tada kaip rezultatą grąžina 0,1 arba -1. Jis apibrėžiamas viduje antraštės failą su jo prototipu taip:



Strcmp() sintaksė C

strcmp( first_str , second_str );>

Strcmp() parametrai C

Ši funkcija naudoja dvi eilutes (simbolių masyvą) kaip parametrus:

    first_str: pirmoji eilutė laikoma pastovaus simbolio (t. y. nekintamos eilutės) rodyklė. second_str: antroji eilutė laikoma pastovaus simbolio žymekliu.

Pastaba: Priežastis, kodėl argumentai laikomi const char *, o ne tik char *, yra todėl, kad funkcija negalėtų modifikuoti eilutės ir pritaikyti juos pastovioms eilutėms.

Grąžinama strcmp() reikšmė C

Funkcija strcmp () grąžina tris skirtingas reikšmes palyginus dvi eilutes, kurios yra tokios:



1. Nulis ( 0 )

Reikšmė lygi nuliui, kai abi eilutės yra identiškos. Tai yra, visi simboliai abiejose eilutėse yra vienodi.

2. Didesnis nei nulis (> 0)

Didesnė nei nulis reikšmė grąžinama, kai pirmasis neatitinkantis simbolis first_str turi didesnę ASCII reikšmę nei atitinkamas antrasis_str arba taip pat galime pasakyti, kad jei pirmasis_str simbolis yra leksikografiškai po antrojo_str simbolio, tada grąžinamas nulis.

3. Mažiau nei nulis ( <0 )

Vertė, mažesnė už nulį, grąžinama, kai pirmasis neatitinkantis simbolis first_str turi mažesnę ASCII reikšmę nei atitinkamas simbolis second_str . Taip pat galime pasakyti, kad jei pirmasis_str simbolis leksikografiškai yra prieš sekundės_str. simbolį, grąžinamas nulis.



Norėdami sužinoti daugiau apie ASCII reikšmes, skaitykite šį straipsnį – ASCII lentelė

Kaip naudoti strcmp() funkciją C

Šis pavyzdys parodo, kaip naudoti strcmp() funkciją 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;> }>

java eilučių kūrėjas
>

>

arp – komanda
Išvestis

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

Kaip veikia strcmp() C?

C strcmp() funkcija veikia lygindama dvi eilutes leksikografiškai . Tai reiškia, kad jis lygina kiekvieno simbolio ASCII reikšmę, kol randama neatitinkanti reikšmė arba rastas NULL simbolis. Funkcijos C strcmp () veikimą galima apibūdinti taip:

1. Pradedama palyginus abiejų eilučių pirmųjų simbolių ASCII reikšmes.

2. Jei pirmieji ženklai abiejose eilutėse yra lygūs, ši funkcija tikrins antrąjį simbolį, jei jie taip pat lygūs, tada tikrins trečiąjį ir taip toliau, kol bus rastas pirmasis nesuderinamas simbolis arba rastas NULL simbolis.

3. Jeigu Rastas NULL simbolis , funkcija grąžina nulį nes abi eilutės bus vienodos.

strcmp su nuliu kaip grąžinimo vlaue

4. Jei randamas neatitinkantis simbolis,

  • Jei pirmosios eilutės simbolio ASCII reikšmė yra didesnė nei antrosios eilutės, tada teigiamas skirtumas ( > 0 ) tarp jų ASCII reikšmių grąžinama.
strcmp su teigiama grąžinimo verte
  • Jei pirmosios eilutės simbolio ASCII reikšmė yra mažesnė nei antrosios eilutės, tada neigiamas skirtumas ( < 0 ) tarp jų ASCII reikšmių grąžinama.
strcmp su neigiama grąžinimo verte

Visi šie trys atvejai parodyti toliau pateiktuose pavyzdžiuose.

Strcmp() pavyzdžiai C

1 pavyzdys. strcmp() elgesys identiškoms eilutėms

Ši programa iliustruoja strcmp() funkcijos elgseną identiškoms eilutėms.

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

>

>

Išvestis

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

2 pavyzdys. strcmp() elgsena leksikografiškai didesnei pirmajai eilutei

Toliau pateiktame pavyzdyje parodyta strcmp() funkcijos elgsena leksikografiškai didesnei pirmai eilutei.

C


panaši sąsaja „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;> }>

>

>

Išvestis

Strings are unequal Value of result: 19>

3 pavyzdys. strcmp() elgsena leksikografiškai mažesnės pirmosios eilutės atveju.

Toliau pateiktame pavyzdyje parodyta strcmp() funkcijos elgsena su leksikografiškai mažesnės pirmosios eilutės eilute.

C




pilna i d e forma

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

>

>

Išvestis

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

Išvada

Šiame straipsnyje aptarėme C standartinės bibliotekos funkcija strcmp() kuri naudojama dviejų eilučių palyginimui leksikografiškai. Standartinėje bibliotekoje yra keletas naudingų ir dažnai naudojamų funkcijų, kurios palengvina programavimą, nes padeda išvengti dažnai naudojamos funkcijos perrašymo prireikus.

DUK apie strcmp() C

1. Kaip galime palyginti dvi eilutes C?

Metai: Galime naudoti funkciją strcmp (), kuri yra apibrėžta antraštės faile, kad leksikografiškai palygintume dvi eilutes (simbolių masyvą).

2. Koks yra strcmp() funkcijos prototipas C?

Metai: Funkcijos strcmp() prototipas yra toks:

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

3. Kai strcmp() funkcija grąžina nulį?

Metai: Funkcija strcmp() grąžina nulį, kai dvi eilutės yra identiškos.

4. Ką reiškia strcmp() funkcijos teigiama grąžinimo reikšmė?

Metai: Funkcija strcmp() grąžina teigiamą reikšmę, kai pirmoji eilutė leksikografiškai yra didesnė už antrąją eilutę.

5. Ką reiškia neigiama strcmp() funkcijos grąžinimo reikšmė?

Metai: Funkcijos strcmp() grąžinama neigiama reikšmė reiškia, kad pirmoji eilutė yra leksikografiškai mažesnė už antrąją eilutę.

6. Kaip funkcija strcmp() lygina dvi eilutes C?

Metai: Funkcija strcmp () lygina kiekvieno dviejų eilučių simbolio ASCII reikšmes, kol randamas neatitinkantis simbolis arba NULL simbolis.

7. Ar funkcija strcmp() gali būti naudojama norint palyginti ne eilučių duomenų tipus C?

Metai: Ne, funkcija strcmp() negali palyginti ne eilučių duomenų tipų C. Ji gali palyginti tik kintamą arba nekintamą eilutės duomenų tipą, kuris baigiasi NULL simboliu.

Susiję straipsniai:

  • Stygos C
  • Dažniausiai naudojamos stygų funkcijos C/C++ su pavyzdžiais