isupper(c)- не нуль, если c - буква верхнего регистра; 0 в противном случае.
islower(c)- не нуль, если c - буква нижнего регистра; 0 в противном случае.
isdigit(c)- не нуль, если c - цифра; 0 в противном случае.
isalnum(c)- не нуль, если или isalpha(c) , или isdigit(c) истинны; 0 в противном случае.
isspace(c)- не нуль, если c - символ пробела, табуляции, новой строки, возврата каретки, перевода страницы, вертикальной табуляции.
toupper(c)- возвращает c , приведенную к верхнему регистру.
tolower(c)- возвращает c , приведенную к нижнему регистру.
В стандартной библиотеке содержится более ограниченная версия функции ungetch по сравнению с той, которую мы написали в главе 4. Называется она ungetc . Эта функция, имеющая прототип
int ungetc(int с, FILE *fp)
отправляет символ c назад в файл fp и возвращает c , а в случае ошибки EOF. Для каждого файла гарантирован возврат не более одного символа. Функцию ungetc можно использовать совместно с любой из функций ввода вроде scanf , getc , getchar и т. д.
7.8.4 Исполнение команд операционной системы
Функция system(char *s) выполняет команду системы, содержащуюся в строке s , и затем возвращается к выполнению текущей программы.
Содержимое s , строго говоря, зависит от конкретной операционной системы. Рассмотрим простой пример: в системе UNIX инструкция
system("date");
вызовет программу date , которая направит дату и время в стандартный вывод. Функция возвращает зависящий от системы статус выполненной команды. В системе UNIX возвращаемый статус - это значение, переданное функцией exit .
Функции mallocи callocдинамически запрашивают блоки свободной памяти. Функция malloc
void *malloc(size_t n)
возвращает указатель на n байт неинициализированной памяти или NULL, если запрос удовлетворить нельзя. Функция calloc
void *calloc(size_t n, size_t size)
возвращает указатель на область, достаточную для хранения массива из n объектов указанного размера ( size ), или NULL, если запрос не удается удовлетворить. Выделенная память обнуляется.
Указатель, возвращаемый функциями malloc и calloc , будет выдан с учетом выравнивания, выполненного согласно указанному типу объекта. Тем не менее к нему должна быть применена операция приведения к соответствующему типу (Как уже отмечалось (см. примеч. в параграфе 6.5), замечания о приведении типов значений, возвращаемых функциями malloc или calloc , - неверно. - Примеч. авт. ), как это сделано в следующем фрагменте программы:
int *ip;
ip = (int *) calloc(n, sizeof(int));
Функция free(p)освобождает область памяти, на которую указывает p , - указатель, первоначально полученный с помощью malloc или calloc . Никаких ограничений на порядок, в котором будет освобождаться память, нет, но считается ужасной ошибкой освобождение тех областей, которые не были получены с помощью calloc или malloc .
Нельзя также использовать те области памяти, которые уже освобождены. Следующий пример демонстрирует типичную ошибку в цикле, освобождающем элементы списка.
for (p = head; p != NULL; p = p-›next) /* НЕВЕРНО */
free(p);
Правильным будет, если вы до освобождения сохраните то, что вам потребуется, как в следующем цикле:
for (p = head; p != NULL; p = q) {
q = p-›next;
free(p);
}
В параграфе 8.7 мы рассмотрим реализацию программы управления памятью вроде malloc , позволяющую освобождать выделенные блоки памяти в любой последовательности.
7.8.6 Математические функции
В ‹math.h›описано более двадцати математических функций. Здесь же приведены наиболее употребительные. Каждая из них имеет один или два аргумента типа double и возвращает результат также типа double .
sin(x)- синус x, x в радианах
cos(x)- косинус x, x в радианах
atan2(y,x)- арктангенс y/x, y и x в радианах
exp(x)- экспоненциальная функция e в степени x
log(x)- натуральный (по основанию e) логарифм x (x›0)
log10(x)- обычный (по основанию 10) логарифм x (x›0)
pow(x,y)- x в степени y
sqrt(x)- корень квадратный x (x › 0)
fabs(x)- абсолютное значение x
7.8.7 Генератор случайных чисел
Функция rand()вычисляет последовательность псевдослучайных целых в диапазоне от нуля до значения, заданного именованной константой RAND_MAX, которая определена в ‹stdlib.h›. Привести случайные числа к значениям с плавающей точкой, большим или равным 0 и меньшим 1, можно по формуле
Читать дальше