- •1. Основные отличия стандартной библиотеки Си от других
- •2. Определение класса символов и преобразование символов
- •3. Работа с областями памяти и строками
- •4. Функции преобразования типов
- •5. Математические функции
- •6. Динамическое распределение памяти
- •7. Функции стандартного ввода и вывода
- •8 . Функции ввода/вывода высокого уровня
- •9. Функции ввода/вывода нижнего уровня
- •10. Функции ввода/вывода с консольного терминала
- •11. Работа с каталогами файловой системы
- •12. Операции над файлами
- •13. Использование вызовов операционной системы
- •14. Управление процессами
- •15. Поиск и сортировка
- •16. Функции для работы с датой и временем
Лекция № . Библиотека стандартных функцийязыка Си.
1. Основные отличия стандартной библиотеки Си от других
языков состоят в следующем:
· более сильная интеграция с языком. Так, в самом языке Си нет никаких средств ввода‑вывода, поэтому ни одна программа не может быть написана без использования функций стандартной библиотеки;
· несмотря на то, что существуют стандарты языка Си, ряд функций уникален для той или иной системы программирования;
· многие функции имеют несколько "подфункций", решающих разные задачи и обычно отличающихся одной буквой в названии, например, abs, fabs и labs для функции взятия модуля, printf, fprintf и sprintf для стандартной функции печати и т.д.
Далее рассматриваются основные разделы и функции стандартной библиотеки. Более полная информация может быть получена из рекомендуемых книг и справочной системы.
2. Определение класса символов и преобразование символов
Все функции, приведенные в табл. 8.1 имеют тип int и возвращают int. Возвращаемая величина равна 0, если условие проверки не выполняется. Все функции реализованы как макроопределения, заданные в файле ctype.h.
#include <ctype.h>
Таблица 1. Функции проверки и преобразования символов
________________________________________________________________________
Функция Краткое описание
________________________________________________________________________
isalnum проверка на латинскую букву или цифру
isalpha проверка на латинскую букву
isascii проверка на символ из набора кодировки ASCII
iscntrl проверка на управляющий символ
isdigit проверка на десятичную цифру
isgraph проверка на печатный символ, исключая пробел
islower проверка на малую латинскую букву
isprint проверка на печатный символ
ispunct проверка на знак пунктуации
isspace проверка на пробельный символ
isupper проверка на заглавную латинскую букву
isxdigit проверка на шестнадцатеричную цифру
toascii преобразование символа в код ASCII
tolower проверка и преобразование в малую латинскую букву, если
передана заглавная буква
toupper проверка и преобразование малой латинскую буквы в
заглавную
_tolower преобразование латинскую буквы в малую (без проверки)
_toupper преобразование латинскую буквы в заглавную(без проверки)
________________________________________________________________________________
В примере ниже символ c преобразуется к верхнему регистру:
char c='x';
if (tolower(c)) c=toupper (c);
Пример ниже подсчитывает относительные частоты букв кириллицы во вводимом тексте.
#include<stdio.h>
#include<conio.h>
void main(void) {
char lower_case[] =
"абвгдежзийклмнопрстуфхцчшщьъыэюя";
char upper_case[] =
"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯ";
static float frequency[sizeof(lower_case)],
total=0.;
char ch; int index;
/* Завершение ввода - символ '$' */
puts("Печатайте текст\n");
while((ch = getchar()) != '$') {
//Определяем порядковый номер буквы.
for (index = 0; index < 32; index++)
if((lower_case[index]==ch)||
(upper_case[index]==ch)) {
total++;
frequency[index]++;
break;
}
}
puts("\nОтносительные частоты\n");
if (total) {
for (index = 0; index < 32; index++) {
frequency[index]=
frequency[index]*100./total;
printf("%c-%5.1f ",upper_case[index],
frequency[index]);
}
}
else
puts("\aНи одна буква не введена");
}}