Eilutės ilgio palyginimas yra įprasta C programavimo funkcija, nes tai leidžia pamatyti, kurioje eilutėje yra daugiau simbolių. Tai labai naudinga renkant duomenis. Lyginant stygas reikia specialios funkcijos; nenaudokite! = arba ==.
Žingsniai
1 veiksmas. Yra dvi funkcijos, leidžiančios palyginti eilutes C
Abi šios funkcijos yra įtrauktos į biblioteką.
- strcmp () - Ši funkcija lygina dvi eilutes ir grąžina lyginamąjį simbolių skaičiaus skirtumą.
- strncmp () - tai tas pats, kas strcmp (), išskyrus tai, kad lyginami pirmieji n simboliai. Jis laikomas saugesniu, nes padeda išvengti avarijų perpildymo.
Žingsnis 2. Paleiskite programą su reikiamomis bibliotekomis
Norėsite ir bibliotekų, ir kitų, kurių jums gali prireikti konkrečiai programai.
#įtraukti #įtraukti
Žingsnis 3. Pradėkite
tarpt funkcija.
Tai lengviausias būdas išmokti šios funkcijos, nes bus pateiktas sveikasis skaičius, lyginantis dviejų eilučių ilgį.
#include #include int main () {}
Žingsnis 4. Apibrėžkite dvi eilutes, kurias norite palyginti
Šiame pavyzdyje palyginsime dvi iš anksto nustatytas simbolių eilutes. Taip pat norėsite apibrėžti grąžinimo vertę kaip sveiką skaičių.
#include #include int main () {char *str1 = "obuolys"; char *str2 = "oranžinė"; int ret; }
5 veiksmas. Pridėkite palyginimo funkciją
Dabar, kai apibrėžėte dvi eilutes, galite pridėti palyginimo funkciją. Mes naudosime strncmp (), todėl turime užtikrinti, kad funkcijoje būtų nustatytas matuojamų simbolių skaičius.
#include #include int main () {char *str1 = "obuolys"; char *str2 = "oranžinė"; int ret; ret = strncmp (str1, str2, 6); / *Bus palygintos dvi iki 6 simbolių ilgio eilutės */}
Žingsnis 6. Naudokite
Jei… Kitaip teiginys palyginimui atlikti.
Dabar, kai turite šią funkciją, galite naudoti sakinį If… Else, kad būtų parodyta, kuri eilutė yra ilgesnė. strncmp () grąžins 0, jei eilutės yra vienodo ilgio, teigiamas skaičius, jei str1 yra didesnis, ir neigiamas skaičius, jei str2 yra didesnis.
#include #include int main () {char *str1 = "obuolys"; char *str2 = "oranžinė"; int ret; ret = strncmp (str1, str2, 6); if (ret> 0) {printf ("str1 ilgesnis"); } else if (ret <0) {printf ("str2 yra ilgesnis"); } else {printf ("Abi eilutės yra lygios"); } return (0); }