Ako rozdeliť reťazce pomocou strtok() v programovaní C?

Ako Rozdelit Retazce Pomocou Strtok V Programovani C



Rozdelenie strún je dôležité z rôznych dôvodov, ako je spracovanie textu, analýza údajov alebo analýza, a programovací jazyk C ponúka množstvo spôsobov, ako túto úlohu zvládnuť. Avšak najobľúbenejšia funkcia C, ktorá umožňuje rozdeľovacia šnúra do viacerých tokenov zadaným oddeľovačom je strtok() . Keďže ide o knižničnú funkciu, je dostupná v štandardnej knižnici C, ktorá podporuje operácie s reťazcami.

Ako funguje funkcia strtok()?

Na rozdelenie reťazca pomocou strtok() , najprv musíte pochopiť, ako to funguje. The strtok() číta vstupný reťazec znak po znaku, kým nenarazí na oddeľovač. Keď sa nájde oddeľovač, strtok() nahradí ho znakom nula „\0“, čím sa pôvodný reťazec efektívne rozdelí na dve časti. Funkcia potom vráti ukazovateľ na prvý znak reťazca. The strtok() syntax funkcie je:

strtok ( char * str , konšt char * zdieľam ) ;

The strtok() funkcia berie dva argumenty – ukazovateľ na prvý token v množine tokenov a reťazec, ktorý obsahuje oddeľovacie znaky. Vracia ukazovateľ na ďalší token, ktorý začína hneď za oddeľovačom, ktorý rozdeľuje posledný token. Ak neexistujú žiadne ďalšie tokeny, vráti hodnotu NULL.







Ako rozdeliť reťazce pomocou Strtok () v programovaní C?

Tu je príklad použitia strtok() rozdeliť reťazec:



#include

#include

int Hlavná ( ) {

char vstup [ ] = 'Linux, rada' ;

char * žetón ;

žetón = strtok ( vstup , ',' ) ;

zatiaľ čo ( žetón != NULOVÝ ) {

printf ( '%s \n ' , žetón ) ;

žetón = strtok ( NULOVÝ , ',' ) ;

}

vrátiť 0 ;

}

Vo vyššie uvedenom príklade najprv deklarujeme ukazovateľ na znak. Potom používame strtok() na rozdelenie vstupného reťazca na tokeny. Prvý hovor z strtok() má dva argumenty: vstupný reťazec a reťazec oddeľovača „,“. Prvý token, „Linux“, je ten, ktorý strtok() sa vráti ako ukazovateľ na . Potom použijeme cyklus while na iteráciu cez vstupný reťazec pomocou strtok() s ukazovateľom NULL, aby ste pokračovali v rozdeľovaní zostávajúcich tokenov. Reťazec oddeľovača sa opäť odovzdá ako argument do strtok() na označenie oddeľovacích znakov.



Výkon





Obmedzenia funkcie Strtok().

1: Upraví pôvodný reťazec

The strtok() funkcia nevracia kópiu reťazca; namiesto toho upraví pôvodný reťazec. Preto, ak potrebujete mať po jeho rozdelení neupravenú verziu reťazca, mali by ste pred vyvolaním vytvoriť kópiu pôvodného reťazca strtok() .



2: Asynchrónne

Jedno významné obmedzenie strtok() je, že sa dá použiť iba na jednom reťazci naraz. Inými slovami, nemôžete ho použiť na tokenizáciu viacerých reťazcov súčasne.

3: Obmedzená kapacita

Ďalším možným obmedzením je to strtok() má obmedzenú schopnosť zvládnuť opakované oddeľovače. Napríklad, ak váš reťazec obsahuje po sebe nasledujúce medzery medzi slovami, strtok() zaobchádza s ním ako s jediným oddeľovačom. Na zvládnutie takýchto prípadov budete musieť použiť iný prístup.

Záver

The strtok() funkcia je veľmi užitočná funkcia na rozdelenie reťazcov v programovaní v jazyku C. Zoberie vstupný reťazec a oddeľovací reťazec a vráti ukazovateľ na prvý token nájdený vo vstupnom reťazci. strtok() je deštruktívny, takže ak potrebujete zachovať integritu pôvodného reťazca, odporúča sa vytvoriť jeho duplikát. Teraz, keď už viete, ako na to, môžete akúkoľvek šnúrku nastrihať na menšie kúsky na spracovanie.