C-kielellä otsikkotiedosto sisältää Standard String Libraryn, joka sisältää hyödyllisiä ja yleisesti käytettyjä merkkijonojen käsittelytoimintoja. Tässä artikkelissa näemme, kuinka C:n merkkijonoja verrataan funktion avulla strcmp().
Mikä on strcmp() C:ssä?
C strcmp() on sisäänrakennettu kirjastofunktio, jota käytetään merkkijonojen vertailuun. Tämä funktio ottaa kaksi merkkijonoa (merkkijonoa) argumenteiksi, vertaa näitä kahta merkkijonoa leksikografisesti , ja palauttaa tuloksena 0,1 tai -1. Se on määritelty sisällä otsikkotiedosto prototyypin kanssa seuraavasti:
Strcmp():n syntaksi C:ssä
strcmp( first_str , second_str );>
Strcmp()-parametrit C:ssä
Tämä toiminto ottaa kaksi merkkijonoa (merkkijonoa) parametreiksi:
- first_str: Ensimmäinen merkkijono otetaan osoittimena vakiomerkkiin (eli muuttumattomaan merkkijonoon). second_str: Toinen merkkijono on osoitin vakiomerkkiin.
Huomautus: Syy, miksi argumentit otetaan muodossa const char * pelkän char *:n sijaan, johtuu siitä, että funktio ei voinut muokata merkkijonoa ja tehdä niistä myös vakiomerkkijonoille soveltuvia.
Strcmp():n palautusarvo C:ssä
Strcmp()-funktio palauttaa kolme eri arvoa kahden merkkijonon vertailun jälkeen, jotka ovat seuraavat:
1. Nolla ( 0 )
Arvo, joka on yhtä suuri kuin nolla, kun molempien merkkijonojen havaitaan olevan identtisiä. Tuo on, kaikki merkit molemmissa merkkijonoissa ovat samat.
2. Suurempi kuin nolla (> 0 )
Nollaa suurempi arvo palautetaan, kun ensimmäisellä ei-vastaavalla merkillä first_str on suurempi ASCII-arvo kuin vastaava merkki kohdassa second_str tai voimme myös sanoa, että jos ensimmäinen_str.-merkki on leksikografisesti toisen_str-merkin jälkeen, niin palautetaan nolla.
3. Pienempi kuin nolla ( <0 )
Nollaa pienempi arvo palautetaan, kun ensimmäisellä ei-vastaavalla merkillä first_str on pienempi ASCII-arvo kuin vastaava merkki kohdassa second_str . Voidaan myös sanoa, että jos ensimmäinen_str.-merkki on leksikografisesti ennen toisen_str.-merkkiä, palautetaan nolla.
Lisätietoja ASCII-arvoista on tässä artikkelissa - ASCII-taulukko
Kuinka käyttää strcmp()-funktiota C:ssä
Seuraava esimerkki osoittaa, kuinka strcmp()-funktiota käytetään C:ssä:
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;> }> |
roomalainen numero 1-100
>
>Lähtö
First String: Geeks Second String: Geeks Return value of strcmp(): 0>
Kuinka strcmp() C:ssä toimii?
C strcmp()-funktio toimii vertaamalla kaksi merkkijonoa leksikografisesti . Se tarkoittaa, että se vertaa kunkin merkin ASCII-arvoa, kunnes löydetään ei-vastaava arvo tai NULL-merkki. C strcmp() -funktion toimintaa voidaan kuvata seuraavasti:
1. Se alkaa vertaamalla molempien merkkijonojen ensimmäisten merkkien ASCII-arvoja.
2. Jos molempien merkkijonojen ensimmäiset merkit ovat yhtä suuret, tämä toiminto tarkistaa toisen merkin, jos ne ovat myös yhtä suuret, se tarkistaa kolmannen ja niin edelleen, kunnes löydetään ensimmäinen vastaamaton merkki tai NULL-merkki.
3. Jos NULL-merkki löytyy , toiminto palauttaa nollan koska molemmat merkkijonot ovat samat.
4. Jos ei-vastaava merkki löytyy,
- Jos ensimmäisen merkkijonon merkin ASCII-arvo on suurempi kuin toisen merkkijonon, niin positiivinen ero ( > 0 ) palautetaan niiden ASCII-arvojen välillä.
- Jos ensimmäisen merkkijonon merkin ASCII-arvo on pienempi kuin toisen merkkijonon, niin negatiivinen ero ( < 0 ) palautetaan niiden ASCII-arvojen välillä.
Kaikki nämä kolme tapausta esitetään alla olevissa esimerkeissä.
Esimerkkejä strcmp():stä C:ssä
Esimerkki 1. strcmp() käyttäytyminen identtisille merkkijonoille
Tämä ohjelma havainnollistaa strcmp()-funktion käyttäytymistä identtisille merkkijonoille.
arduinon toiminnot
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;> }> |
>
>Lähtö
Strings are equal Value returned by strcmp() is: 0>
Esimerkki 2. strcmp() käyttäytyminen leksikografisesti suuremmalle ensimmäiselle merkkijonolle
Alla oleva esimerkki osoittaa strcmp()-funktion käyttäytymisen leksikografisesti suuremmalle ensimmäiselle merkkijonolle.
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;> }> |
ubuntu build välttämätön
>
>Lähtö
Strings are unequal Value of result: 19>
Esimerkki 3. strcmp() käyttäytyminen leksikografisesti pienemmälle ensimmäiselle merkkijonolle.
Alla oleva esimerkki osoittaa strcmp()-funktion käyttäytymisen leksikografisesti pienemmälle ensimmäiselle merkkijonolle.
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;> }> |
>
>Lähtö
Strings are unequal Value returned by strcmp() is: -5>
Johtopäätös
Tässä artikkelissa keskustelimme C-standardikirjastofunktio strcmp() jota käytetään kahden merkkijonon vertaamiseen leksikografisesti. Vakiokirjasto sisältää hyödyllisiä ja usein käytettyjä toimintoja, jotka helpottavat ohjelmointia, koska ne auttavat välttämään usein käytetyn funktion uudelleenkirjoittamista uudelleen ja uudelleen tarvittaessa.
Usein kysytyt kysymykset strcmp():stä C:ssä
1. Kuinka voimme verrata kahta merkkijonoa C:ssä?
Vuodet: Voimme käyttää otsikkotiedoston sisällä määritettyä strcmp()-funktiota kahden merkkijonon (merkkijonon) leksikografiseen vertaamiseen.
2. Mikä on strcmp()-funktion prototyyppi C:ssä?
Vuodet: Strcmp()-funktion prototyyppi on seuraava:
int strcmp(const char* lhs , const char* rhs );>
3. Kun strcmp()-funktio palauttaa nollan?
Vuodet: Strcmp()-funktio palauttaa nollan, kun kaksi merkkijonoa ovat identtiset.
4. Mitä strcmp()-funktion positiivinen palautusarvo tarkoittaa?
Vuodet: Strcmp()-funktio palauttaa positiivisen arvon, kun ensimmäinen merkkijono on leksikografisesti suurempi kuin toinen merkkijono.
lataa youtube-videoita vlc
5. Mitä strcmp()-funktion negatiivinen palautusarvo tarkoittaa?
Vuodet: Strcmp()-funktion palauttama negatiivinen arvo tarkoittaa, että ensimmäinen merkkijono on leksikografisesti pienempi kuin toinen merkkijono.
6. Miten strcmp()-funktio vertaa kahta C:n merkkijonoa?
Vuodet: Strcmp()-funktio vertaa kahden merkkijonon kunkin merkin ASCII-arvoja, kunnes löydetään ei-vastaava merkki tai NULL-merkki.
7. Voidaanko strcmp()-funktiolla vertailla ei-merkkijonotietotyyppejä C:ssä?
Vuodet: Ei, strcmp()-funktio ei voi verrata ei-merkkijonotietotyyppejä C:ssä. Se voi verrata vain muuttuvaa tai muuttumatonta merkkijonotietotyyppiä, joka päättyy NULL-merkkiin.
Aiheeseen liittyvät artikkelit:
- Jouset C:ssä
- Yleisesti käytetyt merkkijonofunktiot C/C++:ssa esimerkkien kanssa