Jak rozdělit řetězce pomocí strtok() v programování C?

Jak Rozdelit Retezce Pomoci Strtok V Programovani C



Štípání strun je důležitý z různých důvodů, jako je zpracování textu, analýza dat nebo parsování, a programovací jazyk C nabízí mnoho způsobů, jak tento úkol zvládnout. Nicméně nejoblíbenější funkce C, která umožňuje štípací struna do více tokenů zadaným oddělovačem je strtok() . Jako knihovní funkce je k dispozici ve standardní knihovně C, která podporuje operace s řetězci.

Jak funguje funkce strtok()?

Chcete-li rozdělit řetězec pomocí strtok() , musíte nejprve pochopit, jak to funguje. The strtok() čte vstupní řetězec znak po znaku, dokud nenarazí na oddělovač. Jakmile je nalezen oddělovač, strtok() nahradí jej znakem null ‚\0‘, čímž efektivně rozdělí původní řetězec na dvě části. Funkce pak vrátí ukazatel na první znak řetězce. The strtok() syntaxe funkce je:

strtok ( char * str , konst char * sdílím ) ;

The strtok() Funkce přebírá dva argumenty – ukazatel na první token v sadě tokenů a řetězec, který obsahuje oddělovací znaky. Vrací ukazatel na další token, který začíná bezprostředně za oddělovačem, který rozděluje poslední token. Pokud již nejsou žádné další tokeny, vrátí hodnotu NULL.







Jak rozdělit řetězce pomocí Strtok() v programování C?

Zde je příklad použití strtok() rozdělit řetězec:



#include

#include <řetězec.h>

int hlavní ( ) {

char vstup [ ] = 'Linux, nápověda' ;

char * žeton ;

žeton = strtok ( vstup , ',' ) ;

zatímco ( žeton != NULA ) {

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

žeton = strtok ( NULA , ',' ) ;

}

vrátit se 0 ;

}

Ve výše uvedeném příkladu nejprve deklarujeme ukazatel na znak. Poté používáme strtok() k rozdělení vstupního řetězce na tokeny. První volání strtok() přebírá dva argumenty: vstupní řetězec a oddělovací řetězec „,“. První token, „Linux“, je ten, který strtok() se vrací jako ukazatel na . Potom použijeme smyčku while k iteraci vstupního řetězce pomocí strtok() s ukazatelem NULL, abyste pokračovali v rozdělování zbývajících tokenů. Řetězec oddělovače je opět předán jako argument do strtok() pro označení oddělovacích znaků.



Výstup





Omezení funkce Strtok().

1: Upraví původní řetězec

The strtok() funkce nevrací kopii řetězce; místo toho upraví původní řetězec. Pokud tedy potřebujete mít po jeho rozdělení nezměněnou verzi řetězce, měli byste si před vyvoláním vytvořit kopii původního řetězce strtok() .



2: Asynchronní

Jedno významné omezení strtok() je, že může být použit pouze na jednom řetězci najednou. Jinými slovy, nemůžete jej použít k tokenizaci více řetězců současně.

3: Omezená kapacita

Dalším potenciálním omezením je to strtok() má omezenou kapacitu pro práci s opakovanými oddělovači. Pokud má váš řetězec například po sobě jdoucí mezery mezi slovy, strtok() zachází s ním jako s jediným oddělovačem. K řešení takových případů budete muset použít jiný přístup.

Závěr

The strtok() funkce je velmi užitečná funkce pro dělení řetězců v programování C. Vezme vstupní řetězec a oddělovací řetězec a vrátí ukazatel na první token nalezený ve vstupním řetězci. strtok() je destruktivní, takže pokud potřebujete zachovat integritu původního řetězce, doporučujeme vytvořit jeho duplikát. Nyní, když víte, jak na to, můžete jakýkoli provázek nakrájet na menší kousky pro zpracování.