size_t strspn(const char *str1, const char *str2) функциясы str2 жолына
кірмейтін str1 жолынан алғашқы символдың индексін қайтарады.
size_t strcspn(const char *str1, const char *str2) функциясы str2 жолына
кіретін str1 жолынан алғашқы символдың индексін қайтарады.
Мысал.
int main ( ) {
char str[80] = "123 abc";
printf("n = %d\n", strspn ( str, "321" );
// n = 3 жазады printf("n = %d\n", strcspn ( str, "cba" );
// n = 4 жазады return 1;
}
char* strpbrk(const char *str1, const char *str2 ) функциясы str1
жолындағы алғашқы символды табады, ол str2 жолындағы бір символға тең
болады. Сәтті жағдайда функция осы символға көрсеткішті, ал кері жағдайда
– NULL қайтарады.
Мысал.
char str[80] = "123 abc";
printf ("%s\n", strpbrk ( str, "bca" ));
//abc жазады Жолдарды салыстыру. Жолдарды салыстыру үшін
strstr функциясы
қолданылады.
char* strstr(const char *str1, const char *str2 ) функциясы str2 (соңғы
нольдік байтсыз) жолының str1 жолына алғашқы кіруін табады. Сәтті
жағдайда функция табылған ішкі жолға көрсеткішті, ал кері жағдайда –
NULL қайтарады. Егер str1 көрсеткіші нольдік ұзындығы бар жолды
көрсетсе, онда функция str1 көрсеткішін қайтарады.
Мысал.
char str[80] = "123 abc 456;
printf ("%s\n", strstr ( str, "abc");
// abc 456 шығарады Жолды лексемаларға бөлу. Бұл үшін
strtok функциясы қолданылады.
char* strtok(char *str1, const char *str2 ) функциясы str1 жолындағы
келесі лексемаға (сөз) көрсеткіш қайтарады, мұнда лексемаларды бөлгіш
ретінде str2 жолының символдары болады. Лексемалар біткен жағдайда,
функция NULL қайтарады. strtok функциясын алғашқы рет шақырғанда str1
параметрі лексемаларға бөлінетін жолға көрсетуі тиіс, ал келесі шақырғанда
осы параметр NULL-ге қойылуы қажет. Лексема табылғаннан кейін strtok
функциясы осы лексемадан кейін бөлгіш орнына нольдік байтты жазады.
Мысал.
#include
92
#include < string.h >
int main( ) {
char str[ ] = "12 34 ab cd";
char *p;
p = strtok ( str, " " );
while (p) {
printf ( "%s\n", p );
// бағанға мәндер жазады: 12 34 ab cd p = strtok ( NULL, " " );
}
return 1;
}