Strings splitsen met strtok() in C-programmering?

Strings Splitsen Met Strtok In C Programmering



Snaren splitsen is belangrijk om verschillende redenen, zoals tekstverwerking, gegevensanalyse of parsing, en de programmeertaal C biedt tal van manieren om deze taak aan te pakken. Echter, de meest populaire C-functie die het toelaat snaar splitsen in meerdere tokens door een opgegeven scheidingsteken is stok() . Omdat het een bibliotheekfunctie is, is het beschikbaar in de standaard C-bibliotheek die tekenreeksbewerkingen ondersteunt.

Hoe werkt de strtok()-functie?

Een tekenreeks splitsen met behulp van stok() , moet je eerst begrijpen hoe het werkt. De stok() leest de ingevoerde tekenreeks teken voor teken totdat het een scheidingsteken tegenkomt. Zodra een scheidingsteken is gevonden, stok() vervangt het door een null-teken '\0', waardoor de oorspronkelijke tekenreeks in twee delen wordt gesplitst. Een pointer naar het eerste teken van de string wordt dan geretourneerd door de functie. De stok() de syntaxis van de functie is:

strtok ( char * str , const char * ik deel ) ;

De stok() functie heeft twee argumenten: een verwijzing naar het eerste token in de set tokens en een tekenreeks die de scheidingstekens bevat. Het retourneert een aanwijzer naar het volgende token, die onmiddellijk begint na het scheidingsteken dat het laatste token heeft gesplitst. Het retourneert NULL als er geen tokens meer zijn.







Strings splitsen met Strtok() in C-programmering?

Hier is een voorbeeld van hoe te gebruiken stok() een tekenreeks splitsen:



#include

#include

int voornaamst ( ) {

char invoer [ ] = 'Linux, Tip' ;

char * teken ;

teken = strtok ( invoer , ',' ) ;

terwijl ( teken != NUL ) {

printf ( '%S \N ' , teken ) ;

teken = strtok ( NUL , ',' ) ;

}

opbrengst 0 ;

}

In het bovenstaande voorbeeld declareren we eerst een pointer naar een char. Wij gebruiken dan stok() om de invoertekenreeks in tokens te splitsen. Het eerste telefoontje van stok() heeft twee argumenten: de invoerreeks en de scheidingstekenreeks “,”. Het eerste token, 'Linux', is degene die stok() keert terug als een verwijzing naar . Vervolgens gebruiken we een while-lus om de invoerreeks te doorlopen, met behulp van stok() met een NULL-aanwijzer om door te gaan met het splitsen van de resterende tokens. De scheidingstekenreeks wordt opnieuw als argument aan doorgegeven stok() om de scheidingstekens aan te geven.



Uitgang





Beperkingen van de Strtok()-functie

1: wijzigt de originele tekenreeks

De stok() functie retourneert geen kopie van de tekenreeks; in plaats daarvan wijzigt het de originele string. Daarom, als u een ongewijzigde versie van de tekenreeks nodig heeft nadat u deze hebt gesplitst, moet u een kopie van de originele tekenreeks maken voordat u deze aanroept stok() .



2: Asynchroon

Een belangrijke beperking van stok() is dat het slechts op een enkele string tegelijk kan worden gebruikt. Met andere woorden, u kunt het niet gebruiken om meerdere tekenreeksen tegelijk te tokeniseren.

3: Beperkte capaciteit

Een andere mogelijke beperking is dat stok() heeft een beperkte capaciteit om herhaalde scheidingstekens te verwerken. Als uw tekenreeks bijvoorbeeld opeenvolgende spaties tussen woorden bevat, stok() behandelt het als een enkel scheidingsteken. Om dergelijke gevallen aan te pakken, moet u een andere aanpak gebruiken.

Conclusie

De stok() functie is een erg handige functie voor het splitsen van strings in C-programmering. Er is een invoerreeks en een scheidingstekenreeks voor nodig en retourneert een aanwijzer naar het eerste token dat in de invoerreeks is gevonden. stok() is destructief, dus als u de integriteit van de originele string wilt behouden, is het raadzaam om er een duplicaat van te maken. Nu je weet hoe je het moet doen, kun je elk touwtje in kleinere stukjes knippen om te verwerken.