Kā sadalīt virknes ar strtok() C programmēšanā?

Ka Sadalit Virknes Ar Strtok C Programmesana



Stīgu sadalīšana ir svarīga dažādu iemeslu dēļ, piemēram, teksta apstrādei, datu analīzei vai parsēšanai, un C programmēšanas valoda piedāvā daudzus veidus, kā rīkoties ar šo uzdevumu. Tomēr vispopulārākā C funkcija, kas ļauj šķeļ stīgu vairākos marķieros ar noteiktu atdalītāju strtok() . Tā kā tā ir bibliotēkas funkcija, tā ir pieejama standarta C bibliotēkā, kas atbalsta virkņu darbības.

Kā darbojas strtok() funkcija?

Lai sadalītu virkni, izmantojot strtok() , vispirms ir jāsaprot, kā tas darbojas. The strtok() nolasa ievades virknes rakstzīmi pēc rakstzīmes, līdz tā saskaras ar atdalītāju. Kad ir atrasts norobežotājs, strtok() aizstāj to ar nulles rakstzīmi “\0”, efektīvi sadalot sākotnējo virkni divās daļās. Pēc tam funkcija atgriež rādītāju uz virknes pirmo rakstzīmi. The strtok() funkcijas sintakse ir:

strtok ( char * str , konst char * ES dalos ) ;

The strtok() funkcijai ir divi argumenti — rādītājs uz pirmo marķieri marķieru kopā un virkne, kurā ir norobežotāja rakstzīmes. Tas atgriež rādītāju uz nākamo marķieri, kas sākas tūlīt pēc norobežotāja, kas sadalīja pēdējo marķieri. Tas atgriež NULL, ja vairs nav marķieru.







Kā sadalīt virknes ar Strtok() C programmēšanā?

Šeit ir lietošanas piemērs strtok() lai sadalītu virkni:



#include

#include

starpt galvenais ( ) {

char ievade [ ] = 'Linux, padoms' ;

char * žetons ;

žetons = strtok ( ievade , ',' ) ;

kamēr ( žetons != NULL ) {

printf ( '%s \n ' , žetons ) ;

žetons = strtok ( NULL , ',' ) ;

}

atgriezties 0 ;

}

Iepriekš minētajā piemērā mēs vispirms deklarējam rādītāju uz char. Pēc tam lietojam strtok() lai sadalītu ievades virkni marķieros. Pirmais zvans no strtok() tiek izmantoti divi argumenti: ievades virkne un norobežotāja virkne “,”. Pirmais marķieris “Linux” ir tas strtok() atgriežas kā rādītājs uz . Pēc tam mēs izmantojam cilpu while, lai atkārtotu ievades virkni, izmantojot strtok() ar NULL rādītāju, lai turpinātu atlikušo marķieru sadalīšanu. Atdalītāja virkne atkal tiek nodota kā arguments strtok() lai norādītu norobežojošās rakstzīmes.



Izvade





Strtok() funkcijas ierobežojumi

1: pārveido sākotnējo virkni

The strtok() funkcija neatgriež virknes kopiju; tā vietā tas maina sākotnējo virkni. Tāpēc, ja jums ir nepieciešama nepārveidota virknes versija pēc tās sadalīšanas, pirms izsaukšanas izveidojiet oriģinālās virknes kopiju. strtok() .



2: asinhrons

Viens būtisks ierobežojums strtok() ir tas, ka to var izmantot tikai vienā virknē vienlaikus. Citiem vārdiem sakot, jūs nevarat to izmantot, lai vienlaikus marķētu vairākas virknes.

3: ierobežota jauda

Vēl viens iespējamais ierobežojums ir tas strtok() ir ierobežota spēja apstrādāt atkārtotus norobežotājus. Piemēram, ja virknē starp vārdiem ir secīgas atstarpes, strtok() uzskata to par vienu norobežotāju. Lai risinātu šādus gadījumus, jums būs jāizmanto cita pieeja.

Secinājums

The strtok() funkcija ir ļoti noderīga funkcija, lai sadalītu virknes C programmēšanas laikā. Tas aizņem ievades virkni un norobežojošo virkni un atgriež rādītāju uz pirmo ievades virknē atrasto marķieri. strtok() ir destruktīva, tādēļ, ja nepieciešams saglabāt oriģinālās virknes integritāti, tā vietā ieteicams izveidot tās dublikātu. Tagad, kad jūs zināt, kā to izdarīt, jūs varat sagriezt jebkuru auklu mazākos gabalos apstrādei.