Hvordan dele strenger med strtok() i C-programmering?

Hvordan Dele Strenger Med Strtok I C Programmering



Splitte strenger er viktig av ulike grunner som tekstbehandling, dataanalyse eller parsing, og C-programmeringsspråket tilbyr mange måter å håndtere denne oppgaven på. Imidlertid tillater den mest populære C-funksjonen splitte streng til flere tokens med en spesifisert skilletegn er strtok() . Siden den er en bibliotekfunksjon, er den tilgjengelig i standard C-biblioteket som støtter strengoperasjoner.

Hvordan fungerer strtok()-funksjonen?

For å dele en streng ved hjelp av strtok() , må du først forstå hvordan det fungerer. De strtok() leser inndatastrengen tegn for tegn til den kommer over et skilletegn. Når et skilletegn er funnet, strtok() erstatter den med et nulltegn '\0', og deler den opprinnelige strengen i to deler. En peker til det første tegnet i strengen returneres deretter av funksjonen. De strtok() funksjonens syntaks er:

strtok ( røye * str , konst røye * jeg deler ) ;

De strtok() funksjonen tar to argumenter - en peker til det første tokenet i settet med tokens og en streng som inneholder skilletegnene. Den returnerer en peker til neste token, som starter umiddelbart etter skilletegnet som delte det siste tokenet. Den returnerer NULL hvis det ikke er flere tokens.







Hvordan dele strenger med Strtok() i C-programmering?

Her er et eksempel på hvordan du bruker strtok() for å dele en streng:



#include

#include

int hoved- ( ) {

røye input [ ] = 'Linux, hint' ;

røye * token ;

token = strtok ( input , ',' ) ;

samtidig som ( token != NULL ) {

printf ( '%s \n ' , token ) ;

token = strtok ( NULL , ',' ) ;

}

komme tilbake 0 ;

}

I eksemplet ovenfor erklærer vi først en peker til et tegn. Vi bruker da strtok() for å dele inndatastrengen i tokens. Den første samtalen av strtok() tar to argumenter: inndatastrengen og skilletegnstrengen ','. Det første tokenet, 'Linux,' er det som strtok() returnerer som en pekepinn til . Vi bruker deretter en while-løkke for å iterere gjennom inndatastrengen ved å bruke strtok() med en NULL-peker for å fortsette å dele opp de gjenværende tokens. Skilletegnstrengen sendes igjen som et argument til strtok() for å indikere skilletegnene.



Produksjon





Begrensninger for Strtok()-funksjonen

1: Endrer den opprinnelige strengen

De strtok() funksjonen returnerer ikke en kopi av strengen; i stedet endrer den den opprinnelige strengen. Derfor, hvis du trenger å ha en umodifisert versjon av strengen etter å ha delt den, bør du lage en kopi av den originale strengen før du starter strtok() .



2: Asynkron

En betydelig begrensning av strtok() er at den kun kan brukes på en enkelt streng om gangen. Med andre ord, du kan ikke bruke den til å tokenisere flere strenger samtidig.

3: Begrenset kapasitet

En annen potensiell begrensning er det strtok() har begrenset kapasitet til å håndtere gjentatte avgrensere. Hvis for eksempel strengen din har påfølgende mellomrom mellom ordene, strtok() behandler det som en enkelt skilletegn. For å håndtere slike saker, må du bruke en annen tilnærming.

Konklusjon

De strtok() funksjon er en veldig nyttig funksjon for å dele strenger i C-programmering. Den tar en inndatastreng og en skilletegnstreng og returnerer en peker til det første tokenet som finnes i inndatastrengen. strtok() er destruktiv, så hvis du trenger å bevare integriteten til den originale strengen, anbefales det å lage et duplikat av den i stedet. Nå som du vet hvordan du gjør det, kan du kutte hvilken som helst streng i mindre biter for behandling.