Jak podzielić ciągi ze strtok w programowaniu C?

Jak podzielić ciągi ze strtok w programowaniu C?
Dzielenie sznurków jest ważne z różnych powodów, takich jak przetwarzanie tekstu, analiza danych lub analizowanie, a język programowania C oferuje wiele sposobów obsługi tego zadania. Jednak najpopularniejsza funkcja C, która pozwala dzielenie struny na wiele tokenów przez określony ograniczenie to strtok (). Będąc funkcją biblioteki, jest dostępna w standardowej bibliotece C, która obsługuje operacje ciągów.

Jak działa funkcja strtok ()?

Podzielić ciąg za pomocą strtok (), Najpierw musisz zrozumieć, jak to działa. strtok () odczytuje znak wejściowy według znaku, dopóki nie pojawi się w ograniczniku. Po znalezieniu ogranicznika, strtok () zastępuje go zerowym znakiem „\ 0”, skutecznie dzieląc oryginalny ciąg na dwie części. Wskaźnik do pierwszego znaku ciągu jest następnie zwracany przez funkcję. strtok () Składnia funkcji to:

strtok (char* str, const char* deni);

strtok () Funkcja bierze dwa argumenty- wskaźnik do pierwszego tokena w zestawie tokenów i ciąg, który zawiera znaki ograniczające. Zwraca wskaźnik do następnego tokena, który zaczyna się natychmiast po ograniczeniu, który podzielił ostatni token. Zwraca null, jeśli nie ma już tokenów.

Jak podzielić ciągi ze strtok () w programowaniu C?

Oto przykład używania strtok () Aby podzielić ciąg:

#włączać
#włączać
int main ()
char input [] = "Linux, wskazówka";
Char *Token;
token = strtok (input, ",");
podczas gdy (token != Null)
printf („%s \ n”, token);
token = strtok (null, ",");

powrót 0;

W powyższym przykładzie najpierw deklarujemy wskaźnik do zwęglenia. Następnie używamy strtok () Aby podzielić ciąg wejściowy na tokeny. Pierwsze wezwanie strtok () przyjmuje dwa argumenty: ciąg wejściowy i ciąg deryki „”, ”. Pierwszy token „Linux” jest tym, który strtok () wraca jako wskaźnik do. Następnie używamy pętli podczas iteracji przez ciąg wejściowy, używając strtok () z zerowym wskaźnikiem, aby kontynuować dzielenie pozostałych tokenów. Ciąg ograniczający jest ponownie przekazywany jako argument strtok () Aby wskazać znaki ograniczające.

Wyjście

Ograniczenia funkcji strtok ()

1: Modyfikuje oryginalny ciąg

strtok () Funkcja nie zwraca kopii ciągu; Zamiast tego modyfikuje oryginalny ciąg. Dlatego jeśli musisz mieć niezmodyfikowaną wersję łańcucha po podzieleniu, należy wykonać kopię oryginalnego ciągu strtok ().

2: asynchroniczny

Jedno znaczące ograniczenie strtok () jest to, że można go używać tylko na jednym ciągu. Innymi słowy, nie można go użyć do symbolicznego tokenizacji wielu strun jednocześnie.

3: Ograniczona pojemność

Kolejnym potencjalnym ograniczeniem jest to strtok () ma ograniczoną pojemność do obsługi powtarzających się ograniczeń. Na przykład, jeśli twój ciąg ma kolejne przestrzenie między słowami, strtok () Traktuje to jako pojedynczy ogranicznik. Aby poradzić sobie z takimi przypadkami, musisz zastosować inne podejście.

Wniosek

strtok () Funkcja jest bardzo przydatną funkcją do podziału ciągów w programowaniu C. Wymaga ciągu wejściowego i łańcucha ogranicznika i zwraca wskaźnik do pierwszego tokena znalezionego w ciągu wejściowego. Strtok () jest niszczycielski, więc jeśli chcesz zachować integralność oryginalnego ciągu, zaleca się, aby zamiast tego utworzyć jego duplikat. Teraz, gdy wiesz, jak to zrobić, możesz pokroić dowolny sznur na mniejsze kawałki do przetwarzania.