Как да разделяте низове с strtok() в C програмиране?

Kak Da Razdelate Nizove S Strtok V C Programirane



Разделяне на струни е важен по различни причини, като обработка на текст, анализ на данни или анализиране, а езикът за програмиране C предлага множество начини за справяне с тази задача. Въпреки това, най-популярната C функция, която позволява разделяне на низ в множество токени чрез определен разделител е strtok() . Тъй като е библиотечна функция, тя е налична в стандартната C библиотека, която поддържа операции с низове.

Как работи функцията strtok()?

За да разделите низ с помощта на strtok() , първо трябва да разберете как работи. The strtok() чете входния низ символ по знак, докато попадне на разделител. След като бъде намерен разделител, strtok() го замества с нулев знак '\0', ефективно разделяйки оригиналния низ на две части. След това функцията връща указател към първия символ на низа. The strtok() синтаксисът на функцията е:

strtok ( въглен * ул , конст въглен * споделям ) ;

The strtok() функцията приема два аргумента - указател към първия токен в набора от токени и низ, който съдържа разделителните знаци. Той връща указател към следващия токен, който започва веднага след разделителя, разделил последния токен. Връща NULL, ако няма повече токени.







Как да разделяте низове със Strtok() в C програмиране?

Ето пример как да използвате strtok() за разделяне на низ:



#include

#include

вътр основен ( ) {

въглен вход [ ] = „Linux, съвет“ ;

въглен * жетон ;

жетон = strtok ( вход , ',' ) ;

докато ( жетон != НУЛА ) {

printf ( '%с ' , жетон ) ;

жетон = strtok ( НУЛА , ',' ) ;

}

връщане 0 ;

}

В горния пример първо декларираме указател към char. След това използваме strtok() за разделяне на входния низ на токени. Първото обаждане на strtok() приема два аргумента: входния низ и разделителния низ „,“. Първият токен, „Linux“, е този, който strtok() връща се като указател към . След това използваме цикъл while, за да преминем през входния низ, използвайки strtok() с указател NULL, за да продължи разделянето на останалите токени. Разделителният низ отново се предава като аргумент на strtok() за указване на разделителните знаци.



Изход





Ограничения на функцията Strtok().

1: Променя оригиналния низ

The strtok() функцията не връща копие на низа; вместо това, той променя оригиналния низ. Следователно, ако трябва да имате немодифицирана версия на низа след разделянето му, трябва да направите копие на оригиналния низ, преди да извикате strtok() .



2: Асинхронен

Едно значително ограничение на strtok() е, че може да се използва само на един низ в даден момент. С други думи, не можете да го използвате за токенизиране на няколко низа едновременно.

3: Ограничен капацитет

Друго потенциално ограничение е това strtok() има ограничен капацитет за обработка на повтарящи се разделители. Например, ако вашият низ има последователни интервали между думите, strtok() третира го като единичен разделител. За да се справите с такива случаи, ще трябва да използвате различен подход.

Заключение

The strtok() е много полезна функция за разделяне на низове в C програмирането. Той приема входен низ и разделителен низ и връща указател към първия токен, открит във входния низ. Strtok() е разрушителен, така че ако трябва да запазите целостта на оригиналния низ, се препоръчва вместо това да създадете негов дубликат. Сега, след като знаете как да го направите, можете да нарежете всеки низ на по-малки парчета за обработка.