Kako podijeliti nizove pomoću strtok() u C programiranju?

Kako Podijeliti Nizove Pomocu Strtok U C Programiranju



Razdvajanje žica važan je iz raznih razloga kao što je obrada teksta, analiza podataka ili parsiranje, a programski jezik C nudi brojne načine za rješavanje ovog zadatka. Međutim, najpopularnija C funkcija koja dopušta cijepanje niza u više tokena određenim graničnikom je strtok() . Budući da je funkcija knjižnice, dostupna je u standardnoj C biblioteci koja podržava operacije nizova.

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.