Функции стандартной библиотеки
Любая программа на языке С содержит обращения к стандартной библиотеке, в которой находятся определения типов, констант функций и макросов. Чтобы использовать их в программе, требуется с помощью директивы препроцессора #include включить в исходный текст программы заголовочные файлы, в которых находятся соответствующие объявления. Сами библиотечные функции хранятся в скомпилированном виде и подключаются к программе на этапе компоновки.
Функции библиотеки можно разбить на группы по их назначению: ввод/вывод, обработка строк, проверка символов, математические функции, преобразование чисел, работа с динамической памятью и др.
В заголовочном файле stdio.h содержатся в частности описания следующих стандартных функций, связанных с вводом/выводом:
printf(...) – выполняет форматный вывод данных на экран (возвращает количество напечатанных символов);
puts(s) – выводит на экран строку символов, задаваемую указателем s (возвращает s);
putchar(c) – выводит символ c на экран (возвращает c);
scanf(...) – выполняет форматный ввод данных с клавиатуры (возвращает число введенных элементов данных);
gets(s) – вводит на экран строку символов, задаваемую указателем s (возвращает s);
getchar() – возвращает следующий символ ввода или, если обнаружен конец файла, константу EOF;
fflush(stdin) – очистка буфера ввода stdin от лишних данных, если они есть;
fopen(...) – открывает файл с заданным именем и заданной операцией (возвращает указатель на файл);
fscanf(fp, ...) – выполняет форматный ввод данных из файла (возвращает число введенных элементов данных);
fprintf(fp,...) – выполняет форматный вывод данных в файл (возвращает количество выведенных символов);
fclose(fp) – закрывает файл, на который указывает fp (возвращает нуль или EOF в случае ошибки);
rewind(fp) – позиционирует указатель файла fp на начало файла (ничего не возвращает);
fgets(s,n,fp) – читает не более n-1 символов из файла по указателю fp в строку символов s (возвращает s);
fputs(s,fp) – записывает строку символов s в файл по указателю fp (возвращает s);
. . .
В заголовочном файле string.h содержатся в частности описания следующих стандартных функций для работы со строками символов (стрингами):
strcat(s,t) – добавляет t в конец s;
strncat(s,t,n) – добавляет n символов t в конец s;
strcmp(s,t) – возвращает отрицательное число, нуль или положительное число для s < t, s == t, s > t соответственно;
strncmp(s,t,n) – делает то же, что и strcmp, но количество сравниваемых символов не может превышать n;
strcpy(s,t) – копирует t в s;
strncpy(s,t,n) – копирует не более n символов t в s;
strlen(s) – возвращает длину s;
strchr(s,c) – возвращает указатель на первое появление символа c в s или, если c нет в s, константу NULL;
strrchr(s,c) – возвращает указатель на последнее появление символа c в s или, если c нет в s, константу NULL;
strstr(s,t) – возвращает указатель на первое появление подстроки t в s или константу NULL в противном случае;
. . .
В заголовочном файле ctype.h содержатся описания следующих стандартных функций для проверки символов. Они возвращают ненулевое значение (истина), когда аргумент c типа char удовлетворяет описанному условию или принадлежит указанному классу символов, и нуль (ложь) в противном случае.
isdigit(c) – десятичная цифра;
isxdigit(c) – шестнадцатиричная цифра;
isalpha(c) – буква;
isupper(c) – буква верхнего регистра;
islower(c) – буква нижнего регистра;
isalnum(c) – буква или десятичная цифра;
isspace(c) – пробел, табуляция, новая строка, новая страница;
isgraph(c) – печатаемый символ кроме пробела;
isprint(c) – печатаемый символ включая пробел;
ispunct(c) – печатаемый символ кроме пробела, буквы или цифры;
iscntrl(c) – управляющий символ.
Помимо перечисленных есть две функции, приводящие буквы к одному из регистров:
tolower(c) – возвращает букву на нижнем регистре;
toupper(c) – возвращает букву на верхнем регистре.
В заголовочном файле math.h содержатся в частности описания следующих стандартных математических функций (аргумент х и возвращаемое значение имеют тип double):
sin(x) – возвращает синус х;
cos(x) – возвращает косинус х;
tan(x) – возвращает тангенс х;
asin(x) – возвращает арксинус х;
acos(x) – возвращает арккосинус х;
atan(x) – возвращает арктангенс х;
sinh(x) – возвращает гиперболический синус х;
cosh(x) – возвращает гиперболический косинус х;
tanh(x) – возвращает гиперболический тангенс х;
exp(x) – возвращает е в степени х (экспоненциальная функция);
log(x) – возвращает натуральный логарифм х;
log10(x) – возвращает десятичный логарифм х;
pow(x,y) – возвращает х в степени у;
sqrt(x) – возвращает корень квадратный из х;
ceil(x) – возвращает наименьшее целое, больше или равное x;
floor(x) – возвращает набольшее целое, меньше или равное x;
fabs(x) – возвращает абсолютное значение х;
. . .
В заголовочном файле stdlib.h содержатся в частности описания следующих стандартных функций для преобразования чисел, запроса памяти и других задач:
atof(s) – переводит стринг в число типа double;
atoi(s) – переводит стринг в число типа int;
atol(s) – переводит стринг в число типа long;
rand() – выдает псевдослучайное число в диапазоне от 0 до RAND_MAX = 32767;
srand(seed) – устанавливает seed в качестве начального значения (затравки) последовательности псевдослучайных чисел (вначале seed = 1);
malloc(size) – возвращает указатель на место в памяти для объекта размера size или, при невозможности, константу NULL;
free(p) – освобождает область памяти, на которую указывает указатель р;
exit(status) – вызывает завершение программы: для нормального завершения переменной status нужно присвоить значение EXIT_SUCCESS, в случае ошибки – EXIT_FAILURE;
system(s) – передает стринг s операционной среде для выполнения;
. . .
В заголовочном файле time.h содержатся в частности описания следующих стандартных типов и функций, связанных с датой и временем.
Стандартные типы данных:
time_t – имеет тот же диапазон, что и базовый тип long и предназначен для хранения календарного времени в форме, возврвщаемой функцией time(tp);
struct tm {
tm_sec //секунды от начала минуты (0, 59)
tm_min //минуты от начала часа (0, 59)
tm_hour //часы от полуночи (0, 23)
tm_mday //число месяца (1, 31)
tm_mon //месяцы после января (0, 11)
tm_year //годы после 1900
tm_wday //дни после воскресенья (0, 6)
tm_yday //дни после 1 января (0, 365)
tm_isdst //флаг светлого времени
};
Стандартные функции:
clock() – возвращает время в миллисекундах, фиксируемое процессором от начала счета программы. Для перевода в секунды нужно применить формулу: clock()/CLOCKS_PER_SEC;
time(tp) – возвращает текущее календарное время. Если указатель tp (на переменную типа time_t) не NULL, то возвращаемое значение записывается и в *tp;
ctime(tp) – преобразует календарное время в строку;
difftime(t1,t2) – возвращает разницу времен t1 и t2;
localtime(tp) – возвращает указатель на структуру tm, инициализированную на основе календарного времени;
. . .
В заголовочном файле graphics.h содержатся описания стандартных функций, связанных с отображением на экране графической информации: точек, линий, прямоугольников, дуг, эллипсов и др. (более 50 функций, которые здесь не приводятся).