Jak podzielić łańcuchy za pomocą strtok () w programowaniu C?

Jak Podzielic Lancuchy Za Pomoca Strtok W Programowaniu C



Dzielenie strun jest ważny z różnych powodów, takich jak przetwarzanie tekstu, analiza danych lub parsowanie, a język programowania C oferuje wiele sposobów radzenia sobie z tym zadaniem. Jednak najpopularniejsza funkcja C, która pozwala dzielenie sznurka na wiele tokenów przez określony ogranicznik to strtok() . Będąc funkcją biblioteczną, jest dostępna w standardowej bibliotece C obsługującej operacje na łańcuchach.

Jak działa funkcja strtok()?

Aby podzielić ciąg za pomocą strtok() , musisz najpierw zrozumieć, jak to działa. The strtok() odczytuje ciąg wejściowy znak po znaku, aż natrafi na ogranicznik. Po znalezieniu ogranicznika strtok() zastępuje go znakiem null „\0”, skutecznie dzieląc oryginalny ciąg znaków na dwie części. Następnie funkcja zwraca wskaźnik do pierwszego znaku łańcucha. The strtok() składnia funkcji to:

strtok ( zwęglać * ul , konst zwęglać * udostępniam ) ;

The strtok() funkcja przyjmuje dwa argumenty — wskaźnik do pierwszego tokenu w zbiorze tokenów i łańcuch zawierający znaki ogranicznika. Zwraca wskaźnik do następnego tokena, który rozpoczyna się natychmiast po ograniczniku, który podzielił ostatni token. Zwraca NULL, jeśli nie ma więcej tokenów.







Jak podzielić łańcuchy za pomocą Strtok () w programowaniu C?

Oto przykład użycia strtok() podzielić ciąg znaków:



#include

#include <łańcuch.h>

int główny ( ) {

zwęglać wejście [ ] = „Linux, wskazówka” ;

zwęglać * znak ;

znak = strtok ( wejście , ',' ) ;

chwila ( znak != ZERO ) {

drukujf ( '%S \N ' , znak ) ;

znak = strtok ( ZERO , ',' ) ;

}

powrót 0 ;

}

W powyższym przykładzie najpierw deklarujemy wskaźnik do znaku. Następnie używamy strtok() aby podzielić ciąg wejściowy na tokeny. Pierwsze wezwanie o strtok() przyjmuje dwa argumenty: ciąg wejściowy i ciąg separatora „,”. Pierwszy token, „Linux”, to ten, który strtok() zwraca jako wskaźnik do . Następnie używamy pętli while do iteracji ciągu wejściowego, używając strtok() ze wskaźnikiem NULL, aby kontynuować dzielenie pozostałych tokenów. Ciąg separatora jest ponownie przekazywany jako argument do strtok() aby wskazać znaki separatora.



Wyjście





Ograniczenia funkcji Strtok().

1: Modyfikuje oryginalny ciąg znaków

The strtok() funkcja nie zwraca kopii łańcucha; zamiast tego modyfikuje oryginalny ciąg. Dlatego jeśli potrzebujesz mieć niezmodyfikowaną wersję łańcucha po jego podzieleniu, powinieneś zrobić kopię oryginalnego ciągu przed wywołaniem strtok() .



2: Asynchroniczny

Jedno istotne ograniczenie strtok() jest to, że można go używać tylko na jednym łańcuchu naraz. Innymi słowy, nie można go używać do tokenizacji wielu łańcuchów jednocześnie.

3: Ograniczona pojemność

Kolejnym potencjalnym ograniczeniem jest to strtok() ma ograniczoną zdolność do obsługi powtarzających się ograniczników. Na przykład, jeśli twój ciąg ma kolejne spacje między słowami, strtok() traktuje go jako pojedynczy ogranicznik. Aby poradzić sobie z takimi przypadkami, będziesz musiał zastosować inne podejście.

Wniosek

The strtok() jest bardzo użyteczną funkcją do dzielenia ciągów znaków w programowaniu w C. Pobiera ciąg wejściowy i ciąg separatora i zwraca wskaźnik do pierwszego tokena znalezionego w ciągu wejściowym. strtok() jest destrukcyjny, dlatego jeśli chcesz zachować integralność oryginalnego łańcucha, zaleca się zamiast tego utworzenie jego duplikatu. Teraz, gdy wiesz, jak to zrobić, możesz pociąć dowolny sznurek na mniejsze kawałki do przetworzenia.