Kuidas jagada stringe strtok()-ga C-programmeerimises?

Kuidas Jagada Stringe Strtok Ga C Programmeerimises



Stringide poolitamine on oluline erinevatel põhjustel, nagu tekstitöötlus, andmete analüüs või sõelumine, ja C-programmeerimiskeel pakub selle ülesande lahendamiseks mitmeid viise. Kuid kõige populaarsem C-funktsioon, mis võimaldab lõhenev string mitmeks märgiks määratud eraldajaga on strtok() . Kuna tegemist on teegi funktsiooniga, on see saadaval standardses C teegis, mis toetab stringioperatsioone.

Kuidas funktsioon strtok() töötab?

Stringi jagamiseks kasutades strtok() , peate kõigepealt mõistma, kuidas see töötab. The strtok() loeb sisendstringi tähemärgi haaval, kuni see jõuab eraldusmärgini. Kui eraldaja on leitud, strtok() asendab selle nullmärgiga \0, jagades algse stringi tõhusalt kaheks osaks. Seejärel tagastab funktsioon kursori stringi esimesele märgile. The strtok() funktsiooni süntaks on:

strtok ( char * str , konst char * jagan ) ;

The strtok() Funktsioon võtab kaks argumenti – kursor märkide komplekti esimesele märgile ja string, mis sisaldab eraldaja märke. See tagastab kursori järgmisele märgile, mis algab kohe pärast viimase märgi poolitanud eraldajat. Tagastab NULL, kui märke pole enam.







Kuidas jagada stringe Strtok()-ga C-programmeerimises?

Siin on näide kasutamise kohta strtok() stringi poolitamiseks:



#include

#include

int peamine ( ) {

char sisend [ ] = 'Linux, vihje' ;

char * märk ;

märk = strtok ( sisend , ',' ) ;

samal ajal ( märk != NULL ) {

printf ( '%s \n ' , märk ) ;

märk = strtok ( NULL , ',' ) ;

}

tagasi 0 ;

}

Ülaltoodud näites deklareerime esmalt kursori tähemärgile. Kasutame siis strtok() sisendstringi märkideks jagamiseks. Esimene kõne strtok() võtab kaks argumenti: sisendstring ja eraldaja string ','. Esimene märk „Linux” on see strtok() naaseb osutajana . Seejärel kasutame sisendstringi kordamiseks tsüklit while, kasutades strtok() NULL osutiga, et jätkata ülejäänud märkide jagamist. Eraldaja string edastatakse uuesti argumendina strtok() eraldusmärkide tähistamiseks.



Väljund





Funktsiooni Strtok() piirangud

1: muudab algset stringi

The strtok() funktsioon ei tagasta stringi koopiat; selle asemel muudab see algset stringi. Seega, kui teil on pärast tükeldamist vaja stringi muutmata versiooni, peaksite enne käivitamist tegema algsest stringist koopia strtok() .



2: asünkroonne

Üks oluline piirang strtok() on see, et seda saab korraga kasutada ainult ühes stringis. Teisisõnu, te ei saa seda kasutada mitme stringi samaaegseks märgistamiseks.

3: Piiratud võimsus

Teine potentsiaalne piirang on see strtok() on piiratud võime käsitleda korduvaid eraldajaid. Näiteks kui teie stringis on sõnade vahel järjestikused tühikud, strtok() käsitleb seda ühe eraldajana. Selliste juhtumite lahendamiseks peate kasutama teistsugust lähenemist.

Järeldus

The strtok() Funktsioon on väga kasulik funktsioon stringide tükeldamiseks C-programmeerimisel. See võtab sisendstringi ja eraldajastringi ning tagastab kursori sisendstringist leitud esimesele märgile. strtok() on hävitav, seega kui peate säilitama algse stringi terviklikkuse, on soovitatav luua selle asemel duplikaat. Nüüd, kui teate, kuidas seda teha, saate töötlemiseks lõigata mis tahes nööri väiksemateks tükkideks.