Funkcija strlen C programavimo kalboje

Skaitymo trukmė: 3 minutės

Šiame straipsnyje nagrinėsime strlen funkciją C programavimo kalboje. Be to, jūsų laukia ir testo tipo žinių patikrinimas. Šį straipsnį sudaro šios 4 dalys.

Funkcijos strlen struktūra:

Funkcijos prototipas: size_t strlen(const char *str);

Grąžinama reikšmė:
sveikasis skaičius lygus simbolių skaičiui gautame masyve (simbolis '\0' nėra skaičiuojamas).

Parametrų sąrašas:
(const char *str) - simbolių masyvas, kurio simbolių skaičius yra skaičiuojamas ir grąžinamas.

Antraščių failas: <string.h>.

1. Funkcija strlen. Kas tai?

Funkcija strlen C programavimo kalboje priima vieną parametrą, tai yra simbolių masyvą (char *). Tada yra skaičiuojamas šio masyvo simbolių skaičius, kurį, savo ruožtu, ir grąžina strlen funkcija.

Naudinga žinoti: strlen funkcija skaičiuoja simbolius iki null simbolio ('\0'). Šis simbolis nėra pridedamas prie galutinio rezultato.

Jeigu mes perduodame strlen funkcijai argumentą "katinas", tada iš strlen funkcijos grįžtanti sveikojo skaičiaus reikšmė yra 7. Nors šį styginį literalą (angl. string literal ) ir sudaro 8 simboliai, tai yra 'k', 'a', 't', 'i', 'n', 'a', 's', '\0' (simbolis null (angl. null terminator) yra pridedamas automatiškai C kalboje prie styginių literalų).

Funkcija strlen yra aprašyta <string.h> bibliotekoje. O tai reiškia, jog prieš naudodami šią C kalbos funkciją turime pasirūpinti, jog mūsų programoje yra pastaroji eilutė: #include <string.h>.

Pavyzdys 1: strlen funkcijos naudojimas

# include <string.h>

int main ( void )
{
    
strlen ( "katinas" ); //grąžina 7
    
return 0 ;
}

2. Funkcijos strlen perrašymas

Pažvelkite į C kalbos kodą žemiau (pavyzdys 2).

Pavyzdys 2: C programavimo kalba perrašyta strlen funkcija

unsigned int nauja_strlen ( const char *str )
{
    
unsigned int ilgis = 0 ;
    
while ( str[ilgis] != '\0' )
      
ilgis++;
    
return ilgis;
}

Čia mes aprašome nauja_strlen funkciją, kuri priima vieną parametrą, visai kaip standartinė strlen funkcija, ir grąžina vieną sveikąjį skaičių, visai kaip standartinė strlen funkcija.

Funkcijoje nauja_strlen mes inicializuojame ilgis kintamąjį ir suteikiame jam reikšmę lygią nuliui. Po to, mes tikriname sąlygą, ar gautame simbolių masyvo atitinkamame elemente yra laikoma '\0' reikšmė (4 eilutė). Tokiu atveju, mes paliekame ciklą (angl. loop ) ir grąžiname ilgis kintamojo reikšmę. Kuo daugiau elementų turi tikrinamas simbolių masyvas, tuo daugiau kartų pakartojamas ciklas, kuriame su lyg kiekvienu apsisukimu auga kintamojo ilgis reikšmė.

Dabar perduodami skirtingas simbolių masyvo ar stringinio literalo reikšmes nauja_strlen funkcijai, mes galime tikėtis tų pačių rezultatų kaip ir standartinės strlen funkcijos atveju. Visgi, mes galima ir geriau. O daugiau apie tai trečioje dalyje.

3. Galimi būdai patobulinti strlen funkciją

Funkcija strlen yra puiki ir dažnai taikoma, tačiau su šia funkcija kyla problemų, jeigu jai perduodame tam tikras reikšmes. Viena tokių reikšmių yra NULL, o kita problemas kelianti reikšmė yra simbolių masyvas, neturintis nei vieno '\0' simbolio.

Pirmu atveju, jeigu mes perduodame strlen funkcijai NULL reikšmę, tada mūsų programą ištinka prieigos pažeidimas (angl. segfault arba segmentation fault ). To galime išvengti, jeigu patikriname, jog gauta reikšmė nėra lygi NULL reikšmei ir tik po to tikriname gauto masyvo indeksus.

Antru atveju, tai yra jeigu strlen funkcija gauna simbolių masyvą, kuriame nėra '\0' simbolio, tada galimas programos elgesys nėra apibrėžtas, todėl dažnu atveju kyla nepageidautinų pasėkmių. Šioje vietoje nėra programos pakeitimų, kurie leistų išvengti šios problemos. Todėl reikia pasirūpinti, jog perduodami simbolių masyvai šiai funkcijai turėtų simbolį '\0'.

4. Žinių patikrinimas

Funkcija strlen C programavimo kalboje

1Koks yra strlen("Hello world") rezultatas?

2Funkcija strlen skaičiuoja null simbolį?

3Koks yra strlen(NULL) rezultatas?

Žinių patikrinimas baigtas!

Sveikiname!

Pasidalinkite savo geru rezultatu!