Programmer’s Reference


ГЛАВА 7 – С - низови и символни функции



страница8/19
Дата21.09.2016
Размер2.35 Mb.
#10416
1   ...   4   5   6   7   8   9   10   11   ...   19

ГЛАВА 7 – С - низови и символни функции

Стандартната библиотека на С има богато и разнообразно множество от низово и символно – манипулиращи функции . В С / С ++ низа е нулево – терминиран масив от символи . Низовите функции изискват хедърния файл STRING . H за техните прототипи . Символните функции използват CTYPE . H като техен хедър файл . Понеже С / С ++ няма проверка за границите при операции с масиви , то отговорност на програмиста е да предотврати препълване на масива . Пренебрегването му може да причини срив на вашата програма . В С / С ++ печатим символ е този който може да бъде показан на терминал . Това са обикновенно символите между интервал ( 0х20 ) и тилда ( 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 . Печатимите символи са обикновенно в интервала от 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 до 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 ( ) .




Каталог: books
books -> Тайнствената сила на пирамидите Богомил Герасимов Страхът на времето
books -> В обятията на шамбала
books -> Книга се посвещава с благодарност на децата ми. Майка ми и жена ми ме научиха да бъда мъж
books -> Николай Слатински “Надеждата като лабиринт” София, Издателство “виденов & син”, 1993 год
books -> София, Издателство “Българска книжница”, 2004 год. Рецензенти доц д. ик н. Димитър Йончев, проф д-р Нина Дюлгерова Научен редактор проф д-р Петър Иванов
books -> Николай Слатински “Измерения на сигурността” София, Издателство “Парадигма”, 2000 год
books -> Книга 2 щастие и успех предисловие
books -> Превръщане на числа от една бройна система в друга
books -> Тантриското преобразяване


Сподели с приятели:
1   ...   4   5   6   7   8   9   10   11   ...   19




©obuch.info 2024
отнасят до администрацията

    Начална страница