Стандартната библиотека на С има богато и разнообразно множество от низово и символно – манипулиращи функции . В С / С ++ низа е нулево – терминиран масив от символи . Низовите функции изискват хедърния файл STRING . H за техните прототипи . Символните функции използват CTYPE . H като техен хедър файл . Понеже С / С ++ няма проверка за границите при операции с масиви , то отговорност на програмиста е да предотврати препълване на масива . Пренебрегването му може да причини срив на вашата програма . В С / С ++ печатим символ е този който може да бъде показан на терминал . Това са обикновенно символите между интервал ( 0х20 ) и тилда ( 0хFE ) . Kонтролните символи имат стойности между 0 и 0х1F както също и DEL ( 0x7F ) . По исторически причини аргументите на символните функции са цели числа . Обаче само нискоразредния байт се използва . Символните функции автоматично конвертират техните аргументи в unsigned char . Вие сте свободни да извикате тези функции със символни аргументи , понеже символите се автоматично издигат в цели числа по време на извикване . Хедърния файл STRING . H дефинира типа size_t който е по същество еднакъв със unsigned .
isalnum ( )
# include < ctype . h >
int isalnum ( int ch ) ;
Функцията isalnum ( ) връща ненула ако нейния аргумент е или буква от азбуката или цифра . Ако не е едно от тях се връща 0 . Свързани функции са isalpha ( ) , iscntrl ( ) , isdigit ( ) , isgraph ( ) , isprint ( ) , ispunct ( ) и isspace ( ) .
isalpha ( )
# include < ctype . h >
int isalpha ( int ch ) ;
Функцията isalpha ( ) връща ненула ако ch е буква от азбуката , в противен случай се връща 0 . Какво се разбира под буква варира в езиците . За английския това са главните и малките букви от A до Z . Свързани функции са isalnum ( ) , iscntrl ( ) , isdigit ( ) , isgraph ( ) , isprint ( ) , ispunct ( ) и isspace ( ) .
iscntrl ( )
# include < ctype . h >
int iscntrl ( int ch ) ;
Функцията iscntrl ( ) връща ненула ако ch е между 0 и 0х1F или е равна на 0х7F ( DEL ) ; иначе връща 0 . Свързани функции са isalnum ( ) , isalpha ( ) , isdigit ( ) , isgraph ( ) , isprint ( ) , ispunct ( ) и isspace ( ) .
isdigit ( )
# include < ctype . h >
int isdigit ( int ch ) ;
Функцията isdigit ( ) връща ненула ако ch e цифра , тоест между 0 и 9 . В противен случай връща 0 . Свързани функции са isalnum ( ) , isalpha ( ) , iscntrl ( ) , isgraph ( ) , isprint ( ) , ispunct ( ) и isspace ( ) .
isgraph ( )
# include < ctype . h >
int isgraph ( int ch ) ;
Функцията isgraph ( ) връща ненула ако ch e всеки печатим символ различен от интервал ; иначе се връща 0 . Печатимите символи са обикновенно в интервала от 0х21 до 0х7Е . Свързани функции са isalnum ( ) , isalpha ( ) , iscntrl ( ) , isdigit ( ) , isprint ( ) , ispunct ( ) и isspace ( ) .
islower ( )
# include < ctype . h >
int islower ( int ch ) ;
Функцията islower ( ) връща ненула ако ch е малка буква , иначе се връща 0 . Свързана функция е isupper ( ) .
isprint ( )
# include < ctype . h >
int isprint ( int ch ) ;
Функцията isprint ( ) връща ненула ако ch е печатим символ , включително интервал , иначе се връща 0 . Печатимите символи са често в интервала от 0х20 до 0х7E . Свързани функции са isalnum ( ) , isalpha ( ) , iscntrl ( ) , isdigit ( ) , isgraph ( ) , ispunct ( ) и isspace ( ) .
ispunct ( )
# include < ctype . h >
int ispunct ( int ch ) ;
Функцията ispunct ( ) връща ненула ако ch е пунктуационен символ , иначе се връща 0 . Термина пунктуационен , както е дефиниран чрез тази функция , включва всички печатими символи които не са букви , цифри или интервал . Свързани функции са isalnum ( ) , isalpha ( ) , iscntrl ( ) , isdigit ( ) , isgraph ( ) , isprintt ( ) и isspace ( ) .
isspace ( )
# include < ctype . h >
int isspace ( int ch ) ;
Функцията isspace ( ) връща ненула ако ch е или интервал , хоризонтална табулация , вертикална табулация , връщане на каретата или символ за нов ред , иначе се връща 0 . Свързани функции са isalnum ( ) , isalpha ( ) , iscntrl ( ) , isdigit ( ) , isgraph ( ) , isprintt ( ) и ispunct ( ) .
isupper ( )
# include < ctype . h >
int isupper ( int ch ) ;
Функцията isupper ( ) връща ненула ако ch е главна буква , иначе се връща 0 . Свързана функция е islower ( ) .
isxdigit ( )
# include < ctype . h >
int isxdigit ( int ch ) ;
Функцията isxdigit ( ) връща ненула ако ch е шестнайсетично цифра , иначе се връща 0 . Шестнайсетичната цифра ще бъде в един от тези интервали : A – F , a – f , или 0 – 9 . Свързани функции са isalnum ( ) , isalpha ( ) , iscntrl ( ) , isdigit ( ) , isgraph ( ) , ispunct ( ) и isspace ( ) .
memchr ( )
# include < string . h >
void *memchr ( const void *buffer , int ch , size_t count ) ;
Функцията memchr ( ) претърсва масива указван чрез buffer за първото срещане на ch в първите count символа . Функцията memchr ( ) връща указател към първото срещане на ch в buffer , или връща нулев указател ако ch не е намерен . Свързани функции са memcpy ( ) и isspace ( ) .
memcmp ( )
# include < string . h >
void *memcmp ( const void *buf1 , const void *buf2 ,
size_t count ) ;
Функцията memcmp ( ) сравнява първите count символа от масивите указвани от buf1 и buf2 . Функцията memcmp ( ) връща цяло число което се интерпретира както е показано тук :
Стойност значение
По – малка от 0 buf1 е по – малък от buf2
0 buf1 е равен на buf2
По – голяма от 0 buf1 е по – голям от buf2
Свързани функции са memchr ( ) , memcpy ( ) и strcmp ( ) .
memcpy ( )
# include < string . h >
void *memcpy ( void *to , const void *from , size_t count ) ;
Функцията memcpy ( ) копира count символа от масива указван чрез from в масив указван от to . Ако масивите излизат извън границите поведението на memcpy ( ) е неопределено . Функцията memcpy ( ) връща to . Свързана функция е memmove ( ) .
memmove ( )
# include < string . h >
void *memmove ( void *to , const void *from , size_t count ) ;
Функцията memmove ( ) копира count символа от масив указван чрез from в масив указван от to . Ако масивите са по – големи копието ще се събере точно , поставяйки правилното съдържание в to , но оставяйки from изменен . Функцията memmove ( ) връща to . Свързана функция е memcpy ( ) .
memset ( )
# include < string . h >
void *memset ( void *buf , int ch , size_t count ) ;
Функцията memset ( ) копира нискоразредния байт от ch в първите count символа на масива указван от buf . Тя връща buf . Най – общата употреба на memset ( ) е да инициализира регион от паметта с някаква известна стойност . Свързани функции са memcmp ( ) , memcpy ( ) и memmove ( ) .
strcat ( )
# include < string . h >
char *strcat ( char *str1 , const char *str2 ) ;
Функцията strcat ( ) свързва копие от низа указван чрез str2 към низа указван от str1 и прекъсва str1 със 0 . Нулевия терминатор първоначално завършващ str1 се презаписва от първия символ на str2 . Низа str2 е непроменен от операцията . Ако масивите се препълнят , поведението на strcat ( ) е неопределено . Функцията strcat ( ) връща str1 . Запомнете че не се прави никаква проверка за границите , така че това е задължение на програмиста да осигури достатъчна големина на str1 да съдържа неговото начално съдържание и това на str2 . Свързани функции са strchr ( ) , strcmp ( ) и strcpy ( ) .
strchr ( )
# include < string . h >
char *strchr ( const char *str , int ch ) ;
Функцията strchr ( ) връща указател към първото срещане на нискоразредния байт на ch в низа указван от str . Ако не е открито съвпадение се връща нулев указател . Свързани функции са strpbrk ( ) , strspn ( ) , strstr ( ) и strtok ( ) .
strcmp ( )
# include < string . h >
int strcmp ( const char *str1 , const char *str2 ) ;
Функцията strcmp ( ) лексикографски сравнява два низа връща цяло число базирано на изхода както е показано тук :
Стойност значение
По – малка от 0 str1 е по – малък от str2
0 str1 е равен на str2
По – голяма от 0 str1 е по – голям от str2
Свързани функции са strchr ( ) , strcmp ( ) и strcpy ( ) .
strcoll ( )
# include < string . h >
int strcoll ( const char *str1 , const char *str2 ) ;
Функцията strcoll ( ) сравнява низа указван от str1 със този указван от str2 . Сравнението се представя в съответствие със местните спецификации използвайки функцията setlocale ( ) (Виж ”setlocale ( ) “ за детайли ) . Функцията strcoll ( ) връща integer който се интерпретира както е показано тук :
Стойност значение
По – малка от 0 str1 е по – малък от str2
0 str1 е равен на str2
По – голяма от 0 str1 е по – голям от str2
Свързани функции са memcmp ( ) и strcmp ( ) .
strcpy ( )
# include < string . h >
int strcpy ( char *str1 , const char *str2 ) ;
Функцията strcpy ( ) копира съдържанието на низа указван от str2 в масив указван от str1 . str1 трябва да бъде указател към нулево – терминиран низ . Функцията strcpy ( ) връща str1 . Ako str1 и str2 се надхвърлят , поведението на функцията strcpy ( ) е неопределено . Свързани функции са memcmp ( ) , strchr ( ) , strcmp ( ) и strncmp ( ) .
strcspn ( )
# include < string . h >
size_t strcspn ( const char *str1 , const char *str2 ) ;
Функцията strcspn ( ) връща дължината на начален подниз от низ указван от str1 който съставен само от онези символи несъдържани от низа указван от str2 . Или strcspn ( ) връща индекс на първия символ в низа указван от str1 който отговаря на някой от символите в низа указван от str2 . Свързани функции са strrchr ( ) , strpbrk ( ) ,strstr ( ) и strtok ( ) .
strerror ( )
# include < string . h >
char *strerror ( int errnum ) ;
Функцията strerror ( ) връща указател към имплементационно – зависим низ свързан със стойността на errnum . В никакъв случай не трябва да изменяте низа .
strlen ( )
# include < string . h >
size_t strlen ( char *str ) ;
Функцията strlen ( ) връша дължината на нулево – терминираня низ указван от str . Нулата не се брои .Свързани функции са memcpy ( ) , strchr ( ) , strcmp ( ) и strncmp ( ) .
strncat ( )
# include < string . h >
char *strncat ( const char *str1 , const char *str2 , size_t count ) ;
Функцията strncat ( ) свързва count символа от низа указван от str2 към низа str1 и прекъсва str1 с 0 . Нулевия терминатор първоначално прекъсващ str1 се презаписва от първия символ на str2 . Низа str2 е непроменен от операцията . Ако низовете се препълнят поведението нафункцията е неопределено . Функцията strncat ( ) връща str1 . Запомнете че няма проверка на границите , така че е отговорност на програмиста да осигури достатъчна големина на str1 така че да съдържа и първоначалното си съдържание , и това от str2 . Свързани функции са strcat ( ) , strnchr ( ) , strncmp ( ) и strncpy ( ) .
strncmp ( )
# include < string . h >
int strncmp ( const char *str1 , const char *str2 , size_t count ) ;
Функцията strncmp ( ) лексикографски сравнява count символа от два нулево – терминирани низа и връща integer съгласно таблицата :
Стойност значение
По – малка от 0 str1 е по – малък от str2
0 str1 е равен на str2
По – голяма от 0 str1 е по – голям от str2
Ако има по – малко от count символа в единия низ , сравнението свършва когато се срещне първата нула . Свързани функции са strcmp ( ) , strnchr ( ) и strncpy ( ) .
strncpy ( )
# include < string . h >
char *strncpy ( char *str1 , const char *str2 , size_t count ) ;
Функцията strncpy ( ) се използва да копира count символа от низа указван чрез str2 в низа указван от str1 . str2 трябва да бъде указател към нулево - терминиран низ . Ако str1 и str2 се препълнят , поведението на strnspy ( ) e неопределено . Ако низа указван от str2 има по – малко символа от count , ще бъдат добавени нули в края на str1 . Съответно ако низа указван от str2 е по – дълъг от count символа , резултантния низ указван от str1 няма да бъде нулево прекъснат . Функцията strncpy ( ) връща str1 . Свързани функции са memcpy ( ) , strrchr ( ) , strncat ( ) и strncmp ( ) .
strpbrk ( )
# include < string . h >
char *strpbrk ( const char *str1 , const char *str2 ) ;
Функцията strpbrk ( ) връща указател към първия символ в низа указван от str1 който съвпада със някой символ в низа указван от str2 . Нулевите терминатори не се включват . Ако не се открият съвпадения се връща нулев указател . Свързани функции са strspn ( ) , strchr ( ) , strstr ( ) и strtok ( ) .
strrchr ( )
# include < string . h >
char *strrchr ( const char *str , int ch ) ;
Функцията strrchr ( ) връща указател към последното срещане на ниско – разрядния байт на ch в низа указван от str . Ако няма открито съвпадение се връща нулев указател . Свързани функции са strpbrk ( ) , strspn ( ) , strstr ( ) и
strtok ( ) .
strspn ( )
# include < string . h >
size_t strspn ( const char *str1 , const char *str2 ) ;
Функцията strspn ( ) връща дължината на началния подниз на низа указван от str1 който е съставен от тези символи съдържани в низа указван от str2 . Или strspn ( ) връща индекса на първия символ в низа указван от str1 който не съвпада със никой от символите в низа указван от str2 . Свързани функции са strpbrk ( ) , strrchr ( ) , strstr ( ) и strtok ( ) .
strstr ( )
# include < string . h >
char *strstr ( const char *str1 , const char *str2 ) ;
Функцията strstr ( ) връща указател към първото срещане в низа указван от str1 на низа указван от str2 . Тя връща нулев указател ако не е открито съвпадение . Свързани функции са strchr ( ) , strcspn ( ) , strpbrk ( ) , strspn ( ) , strtok ( ) и strrchr ( ) .
strtok ( )
# include < string . h >
char *strtok ( char *str1 , const char *str2 ) ;
Функцията strtok ( ) връща указател към следващия знак в низа указван от str1 . Символите съставящи низа str2 са разграничителите които определят знака . Нулев указател се връща когато няма знак за връщане . За да разделиме низ първото извикване на strtok ( ) трябва да има str1 указател към низа който ще се разделя . Следващото извикване трябва да използва нулев указател за str1 . По този начин целия низ може да бъде разделен на отделни знаци . Възможно е да използвате различно множество от разграничители за всяко извикване на strtok ( ) . Свързани функции са strchr ( ) , strcspn ( ) , strpbrk ( ) , strrchr ( ) и strspn ( ) .
Програмен съвет
Функцията strtok ( ) дава начин чрез който можете да разделите низ на неговите съставни части . Например , следната програма разделя низа ”One , two , and three “ :
# include < stdio .h >
# include < string .h >
int main ( void )
{
char *p ;
p = strtok ( “ One , two , and three . “ , “ , “ ) ;
printf ( p ) ;
do {
p = strtok ( NULL , “ , . “ ) ;
if ( p ) printf ( “ | %s “ , p ) ;
} while ( p ) ;
return 0 ;
}
Изхода на тази програма е :
One|two|three
Забележете как strtok ( ) се извиква първо със низа който ще бъде разделян , но следващото извикване използва NULL за първи аргумент . Функцията strtok ( ) поддържа указател към низа който е бил разделен . Когато първия аргумент на strtok ( ) указва низ , този вътрешен указател се настройва в началото на този низ . Когато първия аргумент е NULL , strtok ( ) продължава разделянето на предишния низ от там където е спрял , увеличавайки вътрешния указател със всеки знак . Така strtok ( ) може да раздели целия низ . Също забележете как низа който определя разграничителите е променен между първото и следващите извиквания . Със всяко извикване може да се определят различни разграничители
strxfrm ( )
# include < string . h >
size_t strxfrm ( char *str1 , const char *str2 , size_t count ) ;
Функцията strxfrm ( ) преобразува първите count символа от низа указван от str2 така че той да да може да бъде използван чрез функцията strcmp ( ) и слага резултата в низ указван от str1 . След преобразуването резултата от strcmp ( ) със str1 и strcoll ( ) , използвайки началния низ на str2 ще бъде еднакъв . Функцията strxfrm ( ) връща дължината на преобразувания низ . Свързана функция е strcoll ( )
tolower ( )
# include < ctype . h >
int tolower ( int ch ) ;
Функцията tolower ( ) връща еквивалентната на ch малка буква , ако ch е буква , иначе ch се връща непроменена . Свързана функция е toupper ( ) .
toupper ( )
# include < ctype . h >
int toupper ( int ch ) ;
Функцията toupper ( ) връща еквивалентната на ch главна буква , ако ch е буква , иначе ch се връща непроменена . Свързана функция е tolower ( ) .
Сподели с приятели: |