Kuinka jakaa merkkijonoja strtok():lla C-ohjelmoinnissa?

Kuinka Jakaa Merkkijonoja Strtok Lla C Ohjelmoinnissa



Jako jouset on tärkeä useista syistä, kuten tekstinkäsittelystä, tietojen analysoinnista tai jäsentämisestä, ja C-ohjelmointikieli tarjoaa lukuisia tapoja käsitellä tätä tehtävää. Kuitenkin suosituin C-toiminto, joka sallii halkaiseva merkkijono useisiin tokeneihin tietyllä erottimella strtok() . Koska se on kirjastotoiminto, se on saatavilla standardi C-kirjastossa, joka tukee merkkijonotoimintoja.

Kuinka strtok()-funktio toimii?

Voit jakaa merkkijonon käyttämällä strtok() , sinun on ensin ymmärrettävä, miten se toimii. The strtok() lukee syötetyn merkkijonon merkki kerrallaan, kunnes se kohtaa erottimen. Kun erotin löytyy, strtok() korvaa sen tyhjällä merkillä \0 ja jakaa alkuperäisen merkkijonon kahteen osaan. Funktio palauttaa sitten osoittimen merkkijonon ensimmäiseen merkkiin. The strtok() funktion syntaksi on:

strtok ( hiiltyä * str , konst hiiltyä * jaan ) ;

The strtok() funktio ottaa kaksi argumenttia - osoittimen merkkijoukon ensimmäiseen merkkiin ja merkkijonon, joka sisältää erotinmerkit. Se palauttaa osoittimen seuraavaan merkkiin, joka alkaa välittömästi viimeisen merkin jakaneen erottimen jälkeen. Se palauttaa NULL-arvon, jos merkkejä ei ole enää.







Kuinka jakaa merkkijonoja Strtok():lla C-ohjelmoinnissa?

Tässä on esimerkki käytöstä strtok() jakaa merkkijono:



#include

#include

int pää ( ) {

hiiltyä syöttö [ ] = 'Linux, vihje' ;

hiiltyä * merkki ;

merkki = strtok ( syöttö , ',' ) ;

sillä aikaa ( merkki != TYHJÄ ) {

printf ( '%s \n ' , merkki ) ;

merkki = strtok ( TYHJÄ , ',' ) ;

}

palata 0 ;

}

Yllä olevassa esimerkissä julistamme ensin osoittimen merkkiin. Käytämme sitten strtok() jakaaksesi syöttömerkkijonon tunnuksiksi. Ensimmäinen puhelu strtok() ottaa kaksi argumenttia: syötemerkkijono ja erotinmerkkijono ','. Ensimmäinen tunnus, 'Linux', on se strtok() palaa osoittimena . Käytämme sitten while-silmukkaa iteroidaksemme syöttömerkkijonoa käyttämällä strtok() NULL-osoittimella jatkaaksesi jäljellä olevien merkkien jakamista. Erotinmerkkijono välitetään jälleen argumenttina strtok() osoittamaan erotinmerkkejä.



Lähtö





Strtok()-funktion rajoitukset

1: Muokkaa alkuperäistä merkkijonoa

The strtok() funktio ei palauta kopiota merkkijonosta; sen sijaan se muuttaa alkuperäistä merkkijonoa. Siksi, jos sinulla on oltava muokkaamaton versio merkkijonosta sen jakamisen jälkeen, sinun tulee tehdä kopio alkuperäisestä merkkijonosta ennen kutsumista strtok() .



2: Asynkroninen

Yksi merkittävä rajoitus strtok() on, että sitä voidaan käyttää vain yhdessä merkkijonossa kerrallaan. Toisin sanoen et voi käyttää sitä useiden merkkijonojen tokenointiin samanaikaisesti.

3: Rajoitettu kapasiteetti

Toinen mahdollinen rajoitus on se strtok() on rajoitettu kyky käsitellä toistuvia erottimia. Jos merkkijonossasi on esimerkiksi peräkkäisiä välilyöntejä sanojen välillä, strtok() käsittelee sitä yhtenä erottimena. Tällaisten tapausten käsittelemiseksi sinun on käytettävä erilaista lähestymistapaa.

Johtopäätös

The strtok() toiminto on erittäin hyödyllinen toiminto merkkijonojen jakamiseen C-ohjelmointissa. Se ottaa syötemerkkijonon ja erotinmerkkijonon ja palauttaa osoittimen syötemerkkijonosta löytyneeseen ensimmäiseen merkkiin. strtok() on tuhoisa, joten jos haluat säilyttää alkuperäisen merkkijonon eheyden, on suositeltavaa luoda siitä kopio sen sijaan. Nyt kun tiedät kuinka tehdä se, voit leikata minkä tahansa nauhan pienemmiksi paloiksi käsittelyä varten.