Funkcija strchr C programavimo kalboje

Skaitymo trukmė: 3 minutės

C programavimo kalboje konkrečių simbolių ieškojimas simbolių masyve yra aprašytas standartinėje bibliotekoje. Funkcija strchr padeda ieškoti raidžių, skyrybos ženklų ir kitų simbolių masyvuose. Būtent šią funkciją ir aptarsime šiame straipsnyje, kuris yra padalintas į keturias dalis.

Funkcijos strchr struktūra:

Funkcijos prototipas: char *strchr(const char *str, int c);

Grąžinama reikšmė:
simbolių masyvas, kuris prasideda nuo elemento lygaus int c reikšmei. Jeigu tokio elemento nerandama, grąžinama NULL reikšmė.

Parametrų sąrašas:
(const char *str) - simbolių masyvas, kuriame yra ieškoma nurodyto simbolio.
(int c) - simbolis, kurio yra ieškoma.

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

1. Diskusija apie strchr funkciją

C programavimo kalboje funkcija strchr yra naudojama, kad masyve būtų surastas vienas ar kitas simbolis (angl. character ). Iš šios funkcijos grįžtanti reikšmė yra adresas to masyvo elemento, kuris yra vienodas su ieškomu simboliu. Jeigu tokio simbolio perduotame masyve nėra, tada funkcija strchr grąžina NULL reikšmę.

Žemiau esančiame pavyzdyje galite matyti funkcijos strchr naudojimo pavyzdį C kalboje.

Pavyzdys 1: funkcijos strchr naudojimas C programavime.

# include <string.h>
# include <stdio.h>

int main( void )
{
    
printf ( "1. %s\n", strchr ( "Ar bus surasta raide b?" , 'b' ));
    
printf ( "2. %s", strchr ( "Ar bus surastas skaitmuo?" , '2' ));
    
return ( 0 );
}

Galimas rezultatas:

1. bus surasta raide b
2. (null)

2. Funkcijos strchr perrašymas

Pavyzdys 2: C kalba perrašyta strchr funkcija.

char * nauja_strchr( const char *str, int c)
{
    
char a;
    
int i;
    
if ( s == NULL )
        
return ( NULL );
    
a = c;
    
i = 0;
    
while (s[i] != '\0' && s[i] != a)
        
i++;
    
if ( s[i] == a )
        
return ( ( char * )(s + i) );
    
return ( NULL );
}

Funkcijoje nauja_strchr galime matyti while ciklą (9-ta eilutė). Šis ciklas tęsiasi iki kol yra patenkinama viena iš dviejų sąlygų. (1) Gautas simbolis yra rastas gautame simbolių masyve, arba (2) masyve randamas simbolių masyvo pabaigą indikuojantis simbolis, tai yra '\0'.

Kai programa palieka šį aptartą ciklą, tada yra tikrinama sąlyga (11-ta eilutė). Ši sąlyga grąžina true reikšmę, jeigu elementas dėl kurio sustojo ciklas nėra simbolis '\0'. Tokiu atveju iš strchr funkcijos yra grąžinamas šio elemento adresas. Jeigu sąlyginis sakinys nustato false, tada yra grąžinama NULL reikšmė.

Naudinga žinoti: (5-toje eilutėje) mes tikriname, ar gautas str masyvas yra nelygus NULL reikšmei. Tai apsaugo šią funkciją nuo prieigos pažeidimų (angl. segfault).

3. Perrašytos strchr funkcijos testavimas

Perrašyta nauja_strchr funkcija galime testuoti, pasitelkdami kodo pavyzdį žemiau.

Pavyzdys 3: perrašytos strchr funkcijos testavimas.

# include <string.h>
# include <stdio.h>

char * nauja_strchr( const char *str, int c)
{
    
char a;
    
int i;
    
if ( s == NULL )
        
return ( NULL );
    
a = c;
    
i = 0;
    
while (s[i] != '\0' && s[i] != a)
        
i++;
    
if ( s[i] == a )
        
return ( ( char * )(s + i) );
    
return ( NULL );
 
}
int main( void )
{
    
printf ( "1. %s\n", strchr ( "Ar bus surasta raide b?" , 'b' ));
    
printf ( "2. %s", strchr ( "Ar bus surastas skaitmuo?" , '2' ));
    
return ( 0 );
}

Galimas rezultats:

1. bus surasta raide b
2. (null)

Galime matyti, jog funkcija nauja_strchr grąžina tokias pačias reikšmes kaip ir aukščiau tikrinta strchr funkcija. Be to, perrašyta funkcijos versija apsaugo ir nuo prieigos pažeidimų.

4. C kalbos žinių patikrinimas

Funkcija strchr C programavimo kalboje

1Koks yra strchr(NULL, 'u') rezultatas?

2Koks yra strchr("NULL", 'U') rezultatas?

3Kurioje C bibliotekoje yra aprašyta strchr funkcija?

Žinių patikrinimas baigtas!

Sveikiname!

Pasidalinkite savo geru rezultatu!