Kako radi funkcija strtok()?
Za dijeljenje niza pomoću strtok() , prvo morate razumjeti kako funkcionira. The strtok() čita ulazni niz znak po znak dok ne naiđe na graničnik. Kada se pronađe graničnik, strtok() zamjenjuje ga nultim znakom '\0', učinkovito dijeleći izvorni niz na dva dijela. Funkcija tada vraća pokazivač na prvi znak niza. The strtok() sintaksa funkcije je:
strtok ( char * str , konst char * dijelim ) ;The strtok() funkcija uzima dva argumenta - pokazivač na prvi token u skupu tokena i niz koji sadrži znakove za razdvajanje. Vraća pokazivač na sljedeći token, koji počinje odmah nakon graničnika koji je podijelio posljednji token. Vraća NULL ako više nema tokena.
Kako podijeliti nizove pomoću Strtok() u C programiranju?
Evo primjera kako koristiti strtok() podijeliti niz:
#include
#include
int glavni ( ) {
char ulazni [ ] = 'Linux, savjet' ;
char * znak ;
znak = strtok ( ulazni , ',' ) ;
dok ( znak != NULL ) {
printf ( '%s \n ' , znak ) ;
znak = strtok ( NULL , ',' ) ;
}
povratak 0 ;
}
U gornjem primjeru prvo deklariramo pokazivač na char. Zatim koristimo strtok() da biste ulazni niz podijelili na žetone. Prvi poziv od strtok() uzima dva argumenta: ulazni niz i niz razdjelnika “,”. Prvi token, 'Linux', je onaj koji strtok() vraća se kao pokazivač na . Zatim koristimo while petlju za ponavljanje kroz ulazni niz, koristeći strtok() s NULL pokazivačem za nastavak dijeljenja preostalih tokena. Niz razdjelnika ponovno se prosljeđuje kao argument strtok() za označavanje znakova za razdvajanje.
Izlaz
Ograničenja funkcije Strtok().
1: mijenja izvorni niz
The strtok() funkcija ne vraća kopiju niza; umjesto toga, modificira izvorni niz. Stoga, ako trebate imati neizmijenjenu verziju niza nakon što ga podijelite, trebali biste napraviti kopiju izvornog niza prije pozivanja strtok() .
2: Asinkrono
Jedno značajno ograničenje strtok() je da se može koristiti samo na jednom nizu odjednom. Drugim riječima, ne možete ga koristiti za tokenizaciju više nizova istovremeno.
3: Ograničeni kapacitet
Drugo potencijalno ograničenje je to strtok() ima ograničen kapacitet rukovanja ponovljenim graničnicima. Na primjer, ako vaš niz ima uzastopne razmake između riječi, strtok() tretira ga kao jedan graničnik. Za rješavanje takvih slučajeva morat ćete koristiti drugačiji pristup.
Zaključak
The strtok() funkcija je vrlo korisna funkcija za dijeljenje nizova u C programiranju. Uzima ulazni niz i niz za razdvajanje i vraća pokazivač na prvi token pronađen u ulaznom nizu. strtok() je destruktivan, pa ako trebate sačuvati cjelovitost izvornog niza, savjetuje se da umjesto toga stvorite njegov duplikat. Sada kada znate kako to učiniti, možete izrezati bilo koju žicu na manje komade za obradu.