Функции распознавания вида символа Строго говоря, это не функции, а макроопределения, описанные в заголовочном файле <ctype.h>: isalnum(c) истина если c буква или цифра; isalpha(c) истина если c буква; isdigit(c) истина если c цифра; iscntrl(c) истина если c символ удаления или обычный уп- равляющий символ; isprint(c) истина если c печатный символ; islower(c) истина если c буква нижнего регистра; isupper(c) истина если c буква верхнего регистра; ispunct(c) истина если c знак пунктуации; isspace(c) истина если c пробел, знак табуляции, возврат каретки, символ перевода строки, вертикальной табуляции, перевода страницы; isxdigit(c) истина если c шестнадцатеричная цифра; _toupper(c) преобразует c из диапазона [a-z] к символам [A-Z]; _tolower(c) преобразует c из диапазона [A-Z] к символам [a-z]; _toascii(c) преобразует c больший, чем 127 к диапазону 0-127 путем очистки всех битов, кроме 7 млад- ших. Функции преобразования данных Прототипы функций преобразования данных находятся в файле <stdlib.h>. Преобразование строки символов в целое число: int atoi(const char *s); long atol(const char *s); Возвращает преобразованное значение входной строки. Если строка не может быть преобразована возвращает ноль. Преобразование строки символов в вещественное число: double atof(const char *s); Возвращает преобразованное значение входной строки. Если строка не может быть преобразована возвращает ноль. Преобразование строки символов в длинное целое число с указанием системы счисления: long strtol(const char *s, char **endptr, int radix); unsigned long strtoul(const char *s, char **endptr, int radix); Возвращает преобразованное значение входной строки. Если строка не может быть преобразована возвращает ноль. Указатель *endptr устанавливается на первый символ строки не отвечающий синтаксису целого числа языка СИ. Преобразование строки символов в вещественное число: double strtod(const char *s, char **endptr); Возвращает преобразованное значение входной строки. Если строка не может быть преобразована возвращает ноль. Указатель *endptr устанавливается на первый символ строки не отвечающий синтаксису вещественного числа языка СИ. Преобразование целого числа в строку символов с указанием системы счисления: char *ltoa(long value, char *string, int radix); char *itoa(int value, char *string, int radix); char *ultoa(unsigned long value, char *string, int radix); Возвращает указатель на выходную строку. Преобразование вещественного числа в строку символов: char *ectv(double value, int ndig, int *dec, int *sign); char *fctv(double value, int ndig, int *dec, int *sign); Функции возвращают указатель на статический буфер памяти с выходной строкой, содержащей только цифры числа. Буфер обновляется при каждом вызове функции. Для функции ectv() ndig является числом цифр в выходной строке, для fctv() - числом цифр в выходной строке после десятичной точки. Параметр dec показывает положение десятичной точки в выходной строке, которая явно не присутствует. Параметр sign принимает отличное от нуля значение для отрицательных чисел. Преобразование вещественного числа в строку: char *gctv(double value, int ndec, char *buf); Функции возвращают указатель на буфер buf памяти с выходной строкой, содержащей готовое к печати символьное представление числа из ndec цифр в формате F Фортрана, если возможно. В противном случае число будет представлено в формате e функции printf(). Структуры языка C. Под структурой понимают совокупность данных разного типа, лежащих в непрерывной области памяти и объединенных общим именем. Отличие от массивов - элементы структуры разного типа. Необходимость: часто реальный объект характеризуется величинами разного типа. Пример: товар на складе название char name[21]; цена float price; количество int number; Все три переменных неразрывно связаны с каким-то товаром. Описание структуры Способ struct { char name[21]; float price; int number;} goods; Выделяется 27 байт для переменной goods; Способ struct _GOODS { char name[21]; float price; int number;}; Оператор не выделяет память, а устанавливает тип структуры. Для выделения памяти надо выдать оператор: struct _GOODS goods1, goods2; Выделяет память для goods1 и goods2, каждой по 27 байт. Можно смепшать два способа: struct _GOODS { char name[21]; float price; int number;} goods; Устанавливает тип структуры и выделяет память для goods. 3 способ. Используется оператор описания типа typedef: typedef double real; обычное описание Если при описании имени стоит слово typedef, то описание не выделяет память, а создает новый тип данных - real, который можно применять также как и любое другое описание типа: real a, b; Еще пример: typedef char string[40]; новый тип string string a, b, c; - описание трех переменных, каждая из которых является массивом из 40 символов. В случае структуры имеем: typedef struct { char name[21]; float price; int number;} GOODS; Описание типа GOODS goods1, goods2; - выделение памяти для переменных goods1 и goods2. |