Hvordan opdeles strenge med strtok() i C-programmering?

Hvordan Opdeles Strenge Med Strtok I C Programmering



Opsplitning af strenge er vigtigt af forskellige årsager såsom tekstbehandling, dataanalyse eller parsing, og C-programmeringssproget tilbyder adskillige måder at håndtere denne opgave på. Men den mest populære C-funktion, der tillader flække streng i flere tokens med en specificeret afgrænsning er strtok() . Da den er en biblioteksfunktion, er den tilgængelig i standard C-biblioteket, der understøtter strengoperationer.

Hvordan virker strtok()-funktionen?

At splitte en streng vha strtok() , skal du først forstå, hvordan det fungerer. Det strtok() læser inputstrengen tegn for tegn, indtil den støder på et skilletegn. Når en afgrænser er fundet, strtok() erstatter det med et nul-tegn '\0', hvilket effektivt deler den oprindelige streng i to dele. En pointer til det første tegn i strengen returneres derefter af funktionen. Det strtok() funktions syntaks er:

strtok ( char * str , konst char * Jeg deler ) ;

Det strtok() funktion tager to argumenter - en pegepind til det første token i sættet af tokens og en streng, der indeholder afgrænsningstegnene. Det returnerer en markør til det næste token, som starter umiddelbart efter afgrænsningstegnet, der delte det sidste token. Det returnerer NULL, hvis der ikke er flere tokens.







Hvordan opdeles strenge med Strtok() i C-programmering?

Her er et eksempel på, hvordan du bruger strtok() at dele en streng:



#include

#include

int vigtigste ( ) {

char input [ ] = 'Linux, tip' ;

char * polet ;

polet = strtok ( input , ',' ) ;

mens ( polet != NUL ) {

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

polet = strtok ( NUL , ',' ) ;

}

Vend tilbage 0 ;

}

I ovenstående eksempel erklærer vi først en pointer til en char. Vi bruger så strtok() at opdele inputstrengen i tokens. Det første opkald af strtok() tager to argumenter: inputstrengen og afgrænsningsstrengen ','. Det første token, 'Linux', er det, der strtok() vender tilbage som en pegepind til . Vi bruger derefter en while-løkke til at iterere gennem inputstrengen ved hjælp af strtok() med en NULL-markør for at fortsætte med at opdele de resterende tokens. Afgrænsningsstrengen sendes igen som argument til strtok() for at angive afgrænsningstegnene.



Produktion





Begrænsninger af Strtok() Funktion

1: Ændrer den originale streng

Det strtok() funktion returnerer ikke en kopi af strengen; i stedet ændrer den den originale streng. Derfor, hvis du skal have en umodificeret version af strengen efter at have opdelt den, bør du lave en kopi af den originale streng, før du kalder strtok() .



2: Asynkron

En væsentlig begrænsning af strtok() er, at den kun kan bruges på en enkelt streng ad gangen. Med andre ord kan du ikke bruge det til at tokenisere flere strenge samtidigt.

3: Begrænset kapacitet

En anden potentiel begrænsning er det strtok() har en begrænset kapacitet til at håndtere gentagne afgrænsninger. Hvis din streng f.eks. har fortløbende mellemrum mellem ord, strtok() behandler det som en enkelt afgrænsning. For at håndtere sådanne sager skal du bruge en anden tilgang.

Konklusion

Det strtok() funktion er en meget nyttig funktion til at opdele strenge i C-programmering. Det tager en inputstreng og en afgrænsningsstreng og returnerer en pointer til det første token, der findes i inputstrengen. strtok() er destruktiv, så hvis du har brug for at bevare integriteten af ​​den originale streng, anbefales det at oprette en duplikat af den i stedet. Nu hvor du ved, hvordan du gør det, kan du skære enhver streng i mindre stykker til forarbejdning.