Strtok -funksjon i C

Strtok -funksjon i C

“Strtok () -funksjonen er en forhåndsdefinert C -bibliotekfunksjon som gjør at vi kan bryte strenger i flere strenger eller null, det viktigste punktet mens vi deler strenger å huske på at den ikke kan være tom eller null.

To parametere sendes til strtok () -funksjonen som er ansvarlig for tokenisering av strengen; Den første parameteren er den som holder strengen som skal tokeniseres, mens den andre er avgrenseren som holder nøkkelordet eller tegnet som vil definere starten og slutten av strengen som den er tokenisert. Strtok () -funksjonen ignorerer avgrensningsdelen og viser ganske enkelt strengen som ligger rett ved siden av avgrenseren.

Hver gang Strtok () -funksjonen kalles, returneres pekeren til neste token, som er betegnet med en null-terminert streng,. Når det står for slutten av strengen der ingen token blir oppdaget, vil den returnere null.”

Syntaks: m

$ strtok (streng, token);

I syntaks nevnt ovenfor, blir det bestått to argumenter: den første parameteren "String", er den som er hovedstrengen som skal analyseres, mens den andre parameteren "Token" er avgrenseren som vil definere bruddet punktet på strengen.

La oss anta at når strtok () -funksjonen blir kalt for første gang, vil den begynne å søke etter karakteravgrensningen trinn for trinn. Som vi vet lagres strenger i form av en matrise som tildeler påfølgende minneadresser for å lagre en-til-en-pekeren som vil se etter avgrenseren. I tilfelle avgrenseren blir funnet, vil den dele strengen i segmentene; Hvis det ikke blir funnet noen avgrenser, vil den søke etter terminatoren eller nullverdien, som vil indikere strengens sluttpunkt, så vil den returnere nullverdien.

Når strengen er delt, kan den ikke konverteres til sin opprinnelige tilstand. For å forhindre dette, må vi først kopiere strengen inn i bufferen, og så vil vi sende adressen til bufferen til strtok () slik at vi gjennom dette kan bevare vår originale streng.

Eksempel 1

I dette eksemplet skal vi implementere Strtok () -funksjonen for å dele den enkeltstrengen i flere segmenter. Flytter til vårt første trinn der vi erklærer overskriftsfiler “String.H ”og“ Stdio.h ”. Når vi skal jobbe med strenger, så er det nødvendig å inkludere en strengoverskriftsfil med mindre vi ikke er i stand til å implementere strenger. Flytting til hovedfunksjonen vår, der vi erklærte 3 karaktergrupper som er streng [], del [], og karaktervariabelen som heter Token min.

Streng [] er tegnarrayen som er ansvarlig for å holde en streng med tegn som vil bli analysert for å dele den inn i deler. Dell [] er den konstante karakteroppstillingen som fungerer som en avgrenser, eller vi kan si at det er karakteren som vil definere pekeren, på hvilket tidspunkt den skal bryte strengen; I vårt tilfelle er avgrenseren "komma". Der den tredje variabelen, Mytoken, er ansvarlig for å lagre returverdien til strtok () -funksjonen.

#inkludere
#inkludere
int main ()
Char String [] = "Mitt nye prosjekt, mitt Strtok -prosjekt";
const char del [] = ",";
char *mytoken;
myToken = strTok (streng, del);
mens (Mytoken != Null)
printf (" %s \ n", mytoken);
Mytoken = Strtok (null, del);

return (0);

Etter å ha erklært variablene våre, vil vi tilordne Mytoken -variabler Strtok () -funksjonen der vi skal passere variablene som parameter som vi allerede har erklært ovenfor, strenggruppen og avgrensningsvariabelen. Så opprettet vi en stundsløyfe der vi passerte vår Mytoken -variabel, som holder returverdien til Strtok () -funksjonen. Mens Loop vil sjekke tilstanden vi brukte; Hvis Mytoken ikke er null, vil den bevege seg inn i den indre delen av mens Loop; Ellers vil den ikke vise noen utførelse.

La oss anta at tilstanden vår er sann; Deretter vil den skrive ut strengen som blir delt inn i segmenter. Så igjen, tilordne Mytoken en strtok () -funksjon der vi nå skal passere nullelementet og avgrenseren. Null brukes til å instruere strtok () -funksjonen for å stoppe analysen og returnere NULL /0 når strengen er avsluttet, eller en nullvariabel blir oppdaget.

Inntil hele strengen er hentet for avgrensere og fordelt på strenger i henhold til avgrenseren som er definert, vil ikke mens Loop slutter å fungere. Den vil skrive ut strengen rett ved siden av hver avgrensende og ender når avgrenseren blir oppdaget. I vårt tilfelle brukte vi bare en avgrenser i setningen vår, så det bryter bare inn i to segmenter, som vist på figuren nedenfor.

Eksempel 2

I dette eksemplet vil vi dele opp strenggrupper i flere segmenter ved å bruke mellomrom som vår avgrensning. I eksemplet ovenfor deler vi bare to strenger i segmenter, men i dette vil vi bruke mellomrom som vår avgrensende og vil dele en streng i flere segmenter.

#inkludere
#inkludere
int main ()

char string [] = "min strtok -funksjon på C -språk";
char *strtoken;
strToken = strTok (String, "");
mens (strtoken != Null)

printf ("%s \ n", strtoken);
strToken = Strtok (null, "");

retur 0;

Som vist i koden over, inkluderte vi nettopp overskriften vår; Etter å ha inkludert overskriftsfilen, vil vi flytte inn i hovedfunksjonen vår, der vi vil erklære to karaktervariabler der man vil være ansvarlig for å holde strengen og den andre som vil være ansvarlig for å holde returverdien til strtok () -funksjonen. I dette tilfellet har vi "String []" -variabelen som lagrer strengen som skal deles, mens "strtoken" brukes til å lagre returverdien til strtok () -funksjonen.

Så vil vi kalle strtok () -funksjonen, som vi går til parametere, da er en streng som skal analyseres, og den andre er avgrenseren i seg selv; I dette eksemplet er avgrenseren plass. Som vist på figuren nedenfor, vil den oppdage strengen i segmenter når plassen blir oppdaget i segmenter. Avgrenseren vil ikke bli skrevet ut den første brevet til slutten der den neste avgrenser vil bli funnet; Den vil skrive ut hele strengen mellom avgrensere.

Konklusjon

I denne guiden har vi studert Strtok () -funksjonen kort, der vi beskrev formålet med strtok () -funksjonen så vel som implementeringen og hvordan vi vil dele en enkelt streng i flere segmenter ved å bruke en enkelt karaktervariabel som er den avgrensning. Strtok () -funksjonen er enkel å bruke og tolke strenger. Hensikten med artikkelen vår er å gjøre det enkelt for deg å lære Strtok () -funksjonen per definisjon så vel som med flere eksempler.