int tolower(int c) – переводит c на нижний регистр;
int toupper(int c) - переводит c на верхний регистр.
Если c - буква на верхнем регистре, то tolower (c) выдаст эту букву на нижнем регистре; в противном случае она вернет c . Если c - буква на нижнем регистре, то toupper (c) выдаст эту букву на верхнем регистре; в противном случае она вернет c .
B3. Функции, оперирующие со строками:
Имеются две группы функций, оперирующих со строками. Они определены в заголовочном файле . Имена функций первой группы начинаются с букв str , второй - с mem . Если копирование имеет дело с объектами, перекрывающимися по памяти, то, за исключением memmove, поведение функций не определено. Функции сравнения рассматривают аргументы как массивы элементов типа unsigned char .
В таблице на с. 321 переменные s и t принадлежат типу char * , cs и ct – типу const char * , n - типу size_t , а c - значение типа int , приведенное к типу char .
Последовательные вызовы strtokразбивают строку s на лексемы. Ограничителем лексемы служит любой символ из строки ct . В первом вызове указатель s не равен NULL. Функция находит в строке s первую лексему, состоящую из символов, не входящих в ct ; ее работа заканчивается тем, что поверх следующего символа пишется '\0' и возвращается указатель на лексему. Каждый последующий вызов, в котором указатель s равен NULL, возвращает указатель на следующую лексему, которую функция будет искать сразу за концом предыдущей. Функция strtok возвращает NULL, если далее никакой лексемы не обнаружено. Параметр ct от вызова к вызову может варьироваться.
Здесь и ниже под такими выражениями как cscs меньше (больше) ct , если первый несовпавший элемент в cs арифметически меньше (больше) соответствующего элемента из ct .— Примеч. ред.
char * strcpy(s,ct) |
копирует строку ct в строку s , включая '\0'; возвращает s |
char * strncpy(s,ct,n) |
копирует не более n символов строки ct в s ; возвращает s . Дополняет результат символами '\0', если символов в ct меньше n |
char * strcat(s,ct) |
приписывает ct к s ; возвращает s |
char * strncat(s,ct,n) |
приписывает не более n символов ct к s , завершая s символом '\0'; возвращает s |
char strcmp(cs,st) |
сравнивает cs и ct ; возвращает <0, если cs0, если cs>ct ( I.B.: вообще-то, функция возвращает int ) |
char strncmp(cs,ct) |
сравнивает не более n символов cs и ct ; возвращает <0, если cs0, если cs>ct ( I.B.: тоже int должна возвращать ) |
char * strchr(cs,c) |
возвращает указатель на первое вхождение c в cs или, если такового не оказалось, NULL |
char * strrchr(cs,c) |
возвращает указатель на последнее вхождение c в cs или, если такового не оказалось, NULL |
size_t strspn(cs,ct) |
возвращает длину начального сегмента cs , состоящего из символов, входящих в строку ct |
size_t strcspn(cs,ct) |
возвращает длину начального сегмента cs , состоящего из символов, не входящих в строку ct |
char * strpbrk(cs,ct) |
возвращает указатель в cs на первый символ, который совпал с одним из символов, входящих в ct , или, если такового не оказалось, NULL |
char * strstr(cs, ct) |
возвращает указатель на первое вхождение ct в cs или, если такового не оказалось, NULL |
size_t strlen(cs) |
возвращает длину cs |
char * strerror(n) |
возвращает указатель на зависящую от реализации строку, соответствующую номеру ошибки n |
char * strtok(s, ct) |
strtok ищет в s лексему, ограниченную символами из ct ; более подробное описание этой функции см. ниже |
Функции mem...предназначены для манипулирования с объектами как с массивами символов; их назначение - получить интерфейсы к эффективным программам. В приведенной ниже таблице s и t принадлежат типу void * ; cs и ct - типу const void * ; n - типу size_t ; а c имеет значение типа int , приведенное к типу char .
void * memcpy(s,ct, n) |
копирует n символов из ct в s и возвращает s |
void * memmove(s,ct,n) |
делает то же самое, что и memcpy , но работает и в случае "перекрывающихся" объектов. |
int memcmp(cs, ct, n) |
сравнивает первые n символов cs и ct ; выдает тот же результат, что и функция strcmp |
void * memchr(cs, c, n) |
возвращает указатель на первое вхождение символа c в cs или, если среди первых n символов c не встретилось, NULL |
void * memset(s, c, n) |
размещает символ c в первых n позициях строки s и возвращает s |
B4. Математические функции:
Читать дальше