Cum să împărțiți șiruri cu strtok() în programarea C?

Cum Sa Impartiti Siruri Cu Strtok In Programarea C



Împărțirea șirurilor este important din diverse motive precum procesarea textului, analiza datelor sau analizarea, iar limbajul de programare C oferă numeroase modalități de a gestiona această sarcină. Cu toate acestea, cea mai populară funcție C care permite sfoară de despicare în mai multe jetoane printr-un delimitator specificat este strtok() . Fiind o funcție de bibliotecă, este disponibilă în biblioteca standard C care acceptă operații cu șir.

Cum funcționează funcția strtok()?

Pentru a împărți un șir folosind strtok() , mai întâi trebuie să înțelegeți cum funcționează. The strtok() citește șirul de intrare caracter cu caracter până când dă peste un delimitator. Odată ce este găsit un delimitator, strtok() îl înlocuiește cu un caracter nul „\0”, împărțind efectiv șirul original în două părți. Un pointer către primul caracter al șirului este apoi returnat de funcție. The strtok() sintaxa funcției este:

strtok ( char * str , const char * Împărtășesc ) ;

The strtok() funcția ia două argumente - un pointer către primul token din setul de simboluri și un șir care conține caracterele delimitare. Returnează un pointer către următorul simbol, care începe imediat după delimitatorul care a împărțit ultimul simbol. Returnează NULL dacă nu mai există jetoane.







Cum să împărțiți șiruri de caractere cu Strtok() în programarea C?

Iată un exemplu de utilizare strtok() a împărți un șir:



#include

#include <șir.h>

int principal ( ) {

char intrare [ ] = „Linux, indiciu” ;

char * jeton ;

jeton = strtok ( intrare , ',' ) ;

in timp ce ( jeton != NUL ) {

printf ( „%s \n ' , jeton ) ;

jeton = strtok ( NUL , ',' ) ;

}

întoarcere 0 ;

}

În exemplul de mai sus, declarăm mai întâi un pointer către un caracter. Folosim apoi strtok() pentru a împărți șirul de intrare în jetoane. Primul apel al strtok() are două argumente: șirul de intrare și șirul delimitator „,”. Primul simbol, „Linux”, este cel care strtok() revine ca indicator la . Apoi folosim o buclă while pentru a itera prin șirul de intrare, folosind strtok() cu un pointer NULL pentru a continua împărțirea token-urilor rămase. Șirul delimitator este din nou transmis ca argument către strtok() pentru a indica caracterele delimitatoare.



Ieșire





Limitări ale funcției Strtok().

1: Modifică șirul original

The strtok() funcția nu returnează o copie a șirului de caractere; în schimb, modifică șirul original. Prin urmare, dacă trebuie să aveți o versiune nemodificată a șirului după împărțirea acestuia, ar trebui să faceți o copie a șirului original înainte de a invoca strtok() .



2: asincron

O limitare semnificativă a strtok() este că poate fi folosit doar pe un singur șir la un moment dat. Cu alte cuvinte, nu îl puteți folosi pentru a tokeniza mai multe șiruri simultan.

3: Capacitate limitată

O altă limitare potențială este aceea strtok() are o capacitate limitată de a gestiona delimitatorii repeți. De exemplu, dacă șirul dvs. are spații consecutive între cuvinte, strtok() îl tratează ca pe un singur delimitator. Pentru a gestiona astfel de cazuri, va trebui să utilizați o abordare diferită.

Concluzie

The strtok() funcția este o funcție foarte utilă pentru împărțirea șirurilor în programarea C. Ia un șir de intrare și un șir delimitator și returnează un pointer la primul simbol găsit în șirul de intrare. strtok() este distructiv, prin urmare, dacă trebuie să păstrați integritatea șirului original, se recomandă să creați o copie a acestuia. Acum că știi cum să o faci, poți tăia orice sfoară în bucăți mai mici pentru prelucrare.