iscntrl() – проверка на управляющий символ;
islower() – проверка на строчные латинские буквы (a-z);
ispunct() – проверка на знаки пунктуации;
isspace() – проверка на пробельные символы и т.д.
Функции форматного преобразования данных из библиотеки <stdlib.h> полезны для преобразования цифр (чисел), записанных в строках. Например, для того, чтобы работать с цифрой, являющейся значением символьной переменной, как с цифрой, а не как с кодом этой цифры, необходимо использовать функцию atoi().
Заголовок библиотечной функции atoi() : int atoi (const char * ptr). Таким образом, аргументом этой функции может быть только адрес, возможно, константный. В примере 6.4 функция atoi() преобразует символы "456" и "320" соответственно в числа 456 и 320. Сумма этих чисел выводится на экран.
Пример 6.4 .
#include <stdio.h>
#include <stdlib.h>
void main (void)
{ char str[] = "Summa 456 and 320";
printf("\n Summa = %d",atoi(str+6)+atoi(str+14));
}
Замечание. Прежде, чем использовать в программе функцию atoi(), следует определить тот адрес, начиная с которого в строке записано число. Если в строке записано отрицательное число, то аргументом функции atoi() может быть адрес знака ‘– ‘.
Кроме функции atoi(), преобразующей символы-цифры в целое число, к функциям форматного преобразования данных относятся функции atol(),atof(), itoa(), ltoa(), ultoa().
6.4. НЕКОТОРЫЕ ФУНКЦИИ БИБЛИОТЕКИ STRING.H ДЛЯ РАБОТЫ СО СТРОКАМИ
Как правило, библиотечные функции, обрабатывающие строки в качестве аргументов получают адреса строк, с которыми следует выполнить заданные действия, а в точку вызова возвращается адрес строки-результата.
Функция strcpy() (ее заголовок функции char * strcpy(char * str_1, constchar * str_2)) копирует байты, расположенные по адресу str_2 в область памяти, на которую указывает str_1. При этом вторым аргументом функции может быть строковый литерал, таким образом, по адресу str_1 создается строка. Например:
char st[7]; strcpy(st, “привет”);
В точку вызова функция возвращает значение переменной str_1, однако ее не обязательно вызывать в правой части оператора присваивания, т.к. после вызова значение ее первого параметра не меняется: меняется только содержимое участка памяти, адресуемого параметром str_1.
Если строки, расположенные по адресам str_1и str_2, перекрываются, то поведение функции не определено.
Для копирования перекрывающихся объектов (в частности, строк) следует использовать функцию memmove(), корректно работающую и в таких случаях. Заголовок функции memmove(): void * memmove (void * ptr_1, const void * ptr_2, size_t N). Функция копирует N символов из области памяти, на которую указывает ptr_2, в области памяти, адресуемую ptr_1. В точку вызова функция возвращает значение переменной ptr_1.
Функция strset() с заголовком char * strset(char *str, intsim), начиная с адреса str, несколько раз записывает символ sim. Количество символов sim определяется местоположением нулевого символа в участке памяти, адресуемом str. Если символы записываются на место какой-либо строки, завершающейся нулевым символом, то длина этой строки совпадает с количеством записей символа sim. В остальных случаях функция делает произвольное количество записей, поэтому целесообразней использовать функцию strnset().
Перед вызовом рассмотренных функций должен быть выделен участок памяти, заполняемый строкой символов. Функция с заголовком char* strdup(constchar * str) копирует исходную строку с адресом str, одновременно выделяя память под копию. Адрес строки-копии – возвращаемое значение этой функции.
Для форматированного чтения из (записи в) строки полезны соответственно функции sscanf() и sprintf(). Эти библиотечные функции аналогичны функциям scanf() и printf() с той лишь разницей, что обрабатывают строку, в отличие от последних, работающих в потоками stdin и stdout. Поэтому в заголовках функций sscanf() и sprintf() присутствует дополнительный формальный параметр – указатель на строку, с которой будут осуществляться действия в соответствии с остальными параметрами.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.