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.