Библиотечные заголовочные файлы ANSI Си.

<assert.h> Содержит макрос утверждений, используемый для обнаружения логических и некоторых других типов ошибок в отлаживаемой версии программы.
<complex.h> Набор функций для работы с комплексными числами.
<ctype.h> Содержит функции, используемые для классификации символов по их типам или для конвертации между верхним и нижним регистрами независимо от используемой кодировки (обычно ASCII или одно из её расширений, хотя есть и реализации, использующие EBCDIC).
<errno.h> Для проверки кодов ошибок, возвращаемых библиотечными функциями.
<fenv.h> Для управления средой, использующей числа с плавающей запятой.
<float.h> Содержит заранее определенные константы, описывающие специфику реализации свойств библиотеки для работы с числами с плавающей запятой, как, например, минимальная разница между двумя различными числами с плавающей точкой (_EPSILON), максимальное число цифр точности (_DIG) и область допустимых чисел (_MIN, _MAX).
<inttypes.h> Для точной конвертации целых типов.
<iso646.h> Для программирования в кодировке ISO 646.
<limits.h> Содержит заранее заданные константы, определяющие специфику реализации свойств целых типов, как, например, область допустимых значений (_MIN, _MAX).
<locale.h> Для setlocale() и связанных констант. Используется для выбора соответствующего языка.
<math.h> Для вычисления основных математических функций
<setjmp.h> Объявляет макросы setjmp и longjmp, используемые для нелокальных переходов
<signal.h> Для управления обработкой сигналов
<stdarg.h> Для доступа к различному числу аргументов, переданных функциям.
<stdbool.h> Для булевых типов данных.
<stdint.h> Для определения различных типов целых чисел. (Появилось в C99)
<stddef.h> Для определения нескольких стандартных типов и макросов.
<stdio.h> Реализует основные возможности ввода и вывода в языке Си. Этот файл содержит весьма важную функцию printf.
<stdlib.h> Для выполнения множества операций, включая конвертацию, генерацию псевдослучайных чисел, выделение памяти, контроль процессов, окружения, сигналов, поиска и сортировки.
<string.h> Для работы с различными видами строк.
<math.h> Для типовых математических функций.
<time.h> Для конвертации между различными форматами времени и даты.
<wchar.h> Для обработки «широких» потоков и нескольких видов строк при помощи «широких» символов (поддержка набора языков).
<wctype.h> Для классификации «широких» символов.

Некоторые языки обеспечивают функциональность стандартной библиотеки Си при помощи своих собственных библиотек. Библиотека может быть адаптирована для структур языка, но семантика операций остается схожей. Язык программирования C++, например, содержит функциональность стандартной библиотеки ANSI Си в пространстве имен std (например, std::printf, std::atoi, std::feof и т. д.), в заголовочных файлах со схожими именами как в Си («cstdio», «cmath», «cstdlib» и т. д.).

Для работы со строками существуют следующие библиотечные функции:

Функция Краткое описание
strcat канкатенация (склеивание) строк
strchr найти первое вхождение заданного символа в строке
strcmp сравнить две строки
strcpy копировать одну строку в другую
strcspn найти первое вхождение символа из заданного набора символов в строке
strdup дублирование строки
strerror сформировать в строке сообщение об ошибке, состоящее из двух частей: системной диагностики и необязательного добавочного пользовательского сообщения
stricmp сравнить две строки, считая символы нижнего и верхнего регистров эквивалентными
strlen вычислить длину строки
strlwr преобразовать строку в нижний регистр (строчные буквы)
strncat добавить n символов в строку
strncmp сравнение n символов в двух строках
strncpy скопировать n символов из одной строки в другую
strnicmp сравнение n символов двух строк
strnset установить n символов в строке в заданное значение
strpbrk найти первое вхождение любого символа из заданного набора в строке
strrchr найти последнее вхождение заданного символа в строке
strrev инвертировать (перевернуть) строку
strset установить все символы строки в заданное значение
strspn найти первую подстроку из заданного набора символов в строке
strstr найти первую подстановку одной строки (более короткой) в другой
strtok найти следующую точку в строке
strupr преобразовать строку в верхний регистр (заглавные буквы)


Прототипы всех функций работы со строками содержатся в файле string.h. Все функции работают со строками, завершающимися нулевым байтом ('\0'). Для работы с массивом символов, не имеющим в конце нулевого байта можно использовать функции преобразования буферов, описанные выше.

Определение класса символов и преобразование символов:

Функция Краткое описание
isalnum проверка на букву или цифру
isalpha проверка на букву
isascii проверка на символ из набора кодировки ASCII
iscntrl проверка на управляющий символ
isdigit проверка на десятичную цифру
isgraph проверка на печатный символ, исключая пробел
islower проверка на малую букву
isprint проверка на печатный символ
ispunct проверка на знак пунктуации
isspace проверка на пробельный символ
isupper проверка на заглавную букву
isxdigit проверка на шестнадцатеричную цифру
toascii преобразование символа в код ASCII
tolower проверка и преобразование в малую букву, если заглавная буква
toupper проверка и преобразование малой буквы в заглавную
_tolower преобразование буквы в малую (без проверки)
_toupper преобразование буквы в заглавную (без проверки)

Все эти функции реализованы как макроопределения, заданные в файле ctype.h

Форматные преобразования данных:

Функция Краткое описание
atof преобразование строки, в представляемое ей число типа float
atoi преобразование строки в число типа int (целое)
atol преобразование строки в число типа long (длинное целое)
ecvt преобразование числа типа double в строку
fcvt преобразование числа типа double в строку
gcvt преобразование числа типа double в строку
itoa преобразование числа типа int в строку
ltoa преобразование числа типа long в строку
ultoa преобразование числа типа unsigned long в строку

Прототипы всех перечисленных функций содержатся в файле stdlib.h.

Функции ввода и вывода в стандартной библиотеке С позволяют читать данные из файлов или получать их с устройств ввода (например, с клавиатуры) и записывать данные в файлы, или выводить их на различные устройства (например, на принтер).

Функции ввода/вывода делятся на три класса:

1) Ввод/вывод верхнего уровня (с использованием понятия "поток").

2) Ввод/вывод для консольного терминала путем непосредственного обращения к нему.

3) Ввод/вывод нижнего уровня (с использованием понятия "дескриптор").

Функции ввода/вывода высокого уровня:

Функция Краткое описание
clearerr очистка флажка ошибки для потока
fclose закрытие потока
fcloseall закрытие всех открытых (на верхнем уровне) файлов
fdopen создание потока для файла, ранее открытого на нижнем уровне, используя дескриптор
feof проверка на конец потока
ferror проверка флажка ошибок потока
flush сброс буфера потока на связанное с ним внешнее устройство
fgetc чтение символа из потока
fileno получение дескриптора файла, связанного с потоком
fgetchar чтение символа из стандартного потока ввода stdin
fgets чтение строки из потока
flushall сброс буферов всех потоков
fopen открытие потока (открыть файл и связать его с потоком)
fprint запись данных в поток по формату
fputc запись символа в поток
fputchar запись символа в стандартный поток вывода stdout
fputs запись строки в поток
fread неформатированное чтение данных из потока
freopen повторное открытие потока в новом режиме
fscanf чтение из потока по формату
fseek перемещение указателя файла в заданную позицию
ftell получение текущей позиции указателя файла
fwrite неформатированная запись данных в поток
getc чтение символа из потока (реализуется через макроопределение)
getchar чтение символа из потока stdin (версия макро)
gets чтение строки из потока stdin
getw чтение двух байтов (по размеру int) в формате слова из потока
printf запись данных в поток stdout по формату
putc запись символа в поток (версия макро)
putchar запись символа в поток stdout (версия макро)
puts запись строки в поток
putw запись двух байтов (по размеру int) в формате слова в поток
rewind установка указателя по файлу на начало файла
scanf чтение данных из потока stdin по формату
setbuf управление буферизацией потока
setvbuf управление буферизацией потока и размером буфера
sprintf запись данных в строку по формату
sscanf чтение данных из строки по формату
tempnam сгенерировать имя временного файла в заданном каталоге
tmpfile создать временный файл
ungetc вернуть символ в поток
vfprintf запись данных в поток по формату
vsprintf запись данных в строку по формату

Прототипы всех функций ввода/вывода верхнего уровня содержатся в файле stdio.h.

Функции ввода/вывода для консольного терминала выделены в отдельную группу, потому что они используют специфические особенности компьютера (наличие специального видеоадаптера) и не являются переносимыми на другие типы компьютеров:

функция Краткое описание
cgets чтение строки с консоли
cprintf запись данных на консольный терминал по формату
cputs вывод строки на консольный терминал
getch чтение символа с консоли
getche чтение символа с консоли с эхо-печатью
kbhit проверка нажатия клавиши на консоли
putch вывод символа на консольный терминал
ungetch возврат последнего прочитанного символа с консольного символа обратно с тем, чтобы он стал следующим символом для чтения

Прототипы функций содержатся в файле conio.h.

Математические функции:

Функция Краткое описание
abs нахождение абсолютного значения выражения типа int
acos вычисление арккосинуса
asin вычисление арксинуса
atan вычисление арктангенса х
atan2 вычисление арктангенса от у/х
cabs нахождение абсолютного значения комплексного числа
ceil нахождение наименьшего целого, большего или равного х
_clear87 получение значения и инициализация слова состояния сопроцессора и библиотеки арифметики с плавающей точкой
_control87 получение старого значения слова состояния для функций арифметики с плавающей точкой и установка нового состояния
cos вычисление косинуса
cosh вычисление гиперболического косинуса
exp вычисление экспоненты
fabs нахождение абсолютного значения типа double
floor нахождение наибольшего целого, меньшего или равного х
fmod нахождение остатка от деления х/у
_fpreset повторная инициализация пакета плавающей арифметики
frexp разложение х как произведения мантиссы на экспоненту 2n
hypot вычисление гипотенузы
labs нахождение абсолютного значения типа long
ldexp вычисление х*2exp
log вычисление натурального логарифма
log10 вычисление логарифма по основанию 10
matherr управление реакцией на ошибки при выполнении функций математической библиотеки
modf разложение х на дробную и целую часть
pow вычисление х в степени у
sin вычисление синуса
sinh вычисление гиперболического синуса
sqrt нахождение квадратного корня
_status87 получение значения слова состояния с плавающей точкой
tan вычисление тангенса
tanh вычисление гиперболического тангенса
bessel вычисление функции Бесселя
dieeetomsbin преобразование плавающего числа двойной точности из IEEE-формата в Microsoft-формат
dmsbintoieee преобразование плавающего числа двойной точности из Microsoft-формата в IEEE-формат
fieeetomsbin преобразование числа с плавающей точкой из IEEE-формата в Microsoft-формат
fmsbintoieee преобразование числа с плавающей точкой из Microsoft-формата в IEEE-формат
     

Прототипы функций содержатся в файле math.h.

Следующие функции используются для динамического распределения памяти:

Функция Краткое описание
calloc выделить память для массива
free освободить блок, полученный посредством функции calloc, malloc или realloc
malloc выделить блок памяти
realloc переразместить ранее выделенный блок памяти, изменив его размер
sbrk переустановить адрес первого байта оперативной памяти, недоступного программе (начала области памяти вне досягаемости программы)
alloca выделение блока памяти из программного стека
_expand изменение размера блока памяти, не меняя местоположения блока
_ffree освобождение блока, выделенного посредством функции fmalloc
_fmalloc выделение блока памяти вне данного сегмента
_freect определить примерное число областей заданного размера, которые можно выделить
_fmsize возвращает размер блока памяти, на который указывает дальний (far) указатель
halloc выделить память для большого массива (объемом более 64 Кбайтов)
hfree освободить блок памяти, выделенный посредством функции halloc
_memavl определить примерный размер в байтах памяти, доступной для выделения
_msize определить размер блока, выделенного посредством функций calloc, malloc, realloc
_nfree освобождает блок, выделенный посредством _nmalloc
_nmalloc выделить блок памяти в заданном сегменте
_nmsize определить размер блока, на которой указывает близкий (near) указатель
stackavail определить объем памяти, доступной для выделения посредством функции alloca
brk переустановить адрес первого байта оперативной памяти, недоступного программе (начала области памяти вне досягаемости программы)
allocmem низкоуровневая функция выделения памяти
freemem низкоуровневая функция возврата памяти операционной системе
coreleft узнать, сколько осталось памяти для выделения в данном сегменте
farcalloc выделить блок памяти вне данного сегмента
farcoreleft определить, сколько памяти для размещения осталось вне данного сегмента
farmalloc выделить блок памяти вне данного сегмента
farrealloc изменить размер блока, ранее выделенного функцией farmalloc или farcalloc
farfree освободить блок, ранее выделенный функцией farmalloc или farcalloc
     

Прототипы функций содержатся в файле malloc.h или в файле alloc.h .

Функции calloc и malloc выделяют блоки памяти, функция malloc выделяет заданное число байтов, тогда как calloc выделяет и инициализирует нулями массив элементов заданного размера.

Следующие библиотечные функции предназначены для поиска и сортировки в массиве:

Функция Краткое описание
bsearch выполняет двоичный поиск
lfind выполняет линейный поиск для заданного значения
lsearch выполняет линейный поиск для заданного значения, которое добавляется в массив, если не найдено
qsort выполняет быструю сортировку

Прототипы функций содержатся в файле stdlib.h .

Функции работы со временем:

Функция Краткое описание
asctime преобразование времени из структуры (внутренней формы) в символьную строку
ctime преобразование времени из длинного целого (long int) в строку символов
gmtime преобразование времени из целого (int) в структуру
localtime преобразование времени из целочисленного (int) в структуру с локальной поправкой
tzset установить переменную времени из переменной времени среды
ftime получить текущее время системы как структуру
time получить текущее системное время как длинное целое (long int)
utime установить время изменения файла
difftime вычислить разность по времени
dostounix преобразование времени из формате ОС MS-DOS в формат ОС UNIX
getdate получить системную дату как структуру
getftime получить системную дату
gettime получить системное время как структуру
setdate установить системную дату
setftime установить системное время
settime установить системное время
stime установить системное время
unixtodos преобразовать время из формата ОС UNIX в формат ОС MS-DOS

Прототипы функций работы со временем времени содержатся в файле time.h.

Функции работы со списком аргументов:

Функция Краткое описание
va_arg выбрать аргумент из списка
va_end переустановить указатель
va_start установить указатель на начало списка аргументов

Прототипы функций работы со временем времени содержатся в файле stdarg.h.

Другие функции:

Функция Краткое описание
assert проверка утверждения о состоянии переменных
getenv получить значение переменной среды (окружения)
perror напечатать сообщение об ошибке
putenv изменить значение переменной среды
swab поменять местами два смежных байта
rand получить псевдо-случайное число
srand инициализация датчика случайных чисел
setjmp запоминание точки для многоуровневого возврата
longjmp многоуровневый возврат из функции

Прототипы всех функций описаны в stdiib.h.

Прототипы функций setjmp и longjmp содержатся в файле setjmp.h.

Библиотечные заголовочные файлы С++.

В современной спецификации для языка C++ заголовки указываются с использованием стандартных имен заголовков, которые не имеют расширения .h (т.е. заголовки C++ не означают имена файлов). Это просто стандартные идентификаторы, которые компилятор может обрабатывать так, как считает нужным (т.е. заголовок может быть преобразован в имя файла, но это вовсе необязательно.

Заголовок C++ Что поддерживает
<algorithm> Различные операции на контейнерах
<bitset> Битовые множества
<complex> Комплексные числа
<deque> Двухсторонние очереди
<exception> Обработка исключительных ситуаций
<fstrearn> Работа с файловыми потоками для чтения и записи в один и тот же файл
<functional> Различные объекты-функции
<iomanip> Манипуляторы ввода-вывода
<ios> Классы ввода-вывода нижнего уровня
<iosfwd> Упреждающие объявления для систем ввода-вывода
<iostream> Стандартные классы ввода-вывода
<istream> Обработка входных потоков
<iterator> Доступ к содержимому контейнеров
<limits> Различные ограничения реализации
<list> Линейные списки
<locale> Информация, связанная с традициями конкретных стран или географических регионов
<map> Отображения (ключи и значения)
<memory> Распределение памяти с помощью распределителей памяти (STL)
<new> Выделение памяти с помощью оператора new
<numeriс> Универсальные операции над числами
<ostream> Обработка выходных потоков
<queue> Очереди
<set> Множества
<sstream> Обработка строковых потоков
<stack> Стеки
<stdexcept> Стандартные исключительные ситуации
<streambuf> Буферизированная обработка потоков
<string> Стандартный класс string
<typeinfo> Динамическая информация о типе
<utility> Шаблоны общего назначения
<valarray> Операции над массивами, содержащими значения
<vector> Векторы (динамические массивы)

В языке C++ также определены следующие заголовки, которые соответствуют С-заголовкам.

<cassert> <cctype> <cerrno>
<cfloat> <ciso646> <climits>
<clocale> <cmath> <csetjmp>
<csignal> <cstdarg> <cstddef>
<cstdio> <cstdlib> <cstring>
<ctime> <cwchar> <cwctype>

В стандартном языке C++ вся информация, связанная со стандартной библиотекой, определена в пространстве имен std. Следовательно, для получения прямого доступа к этим элементам после включения нужного заголовка вам придется использовать следующий оператор using:

using namespace std;

В качестве альтернативного варианта, чтобы не вносить целую библиотеку в глобальное пространство имен, каждый библиотечный идентификатор можно квалифицировать с помощью обозначения std::, например std::cout. Однако в этом случае квалификация каждого имени будет выглядеть весьма громоздко.

Ход работы.

1. Создать консольное приложение в MS Visual Studio 2008.

Рассмотрим порядок создания заготовки программы на языке Visual Studio 2008. После установки данного языка программирования на рабочем столе (или в меню пуск) появится иконка для запуска с названием «Microsoft Visual Studio 2008», выбирая которую на экране появится главное окно программы (рис. 1).

 
  Библиотечные заголовочные файлы ANSI Си. - student2.ru

 
  Библиотечные заголовочные файлы ANSI Си. - student2.ru

В самом верху окна располагается меню, с помощью которого можно осуществлять управление процессом создания, компиляции и отладки программ.

Создание программ осуществляется путем выбора в меню пункта

File->New->Project

Библиотечные заголовочные файлы ANSI Си. - student2.ru
после чего на экране появится диалоговое окно выбора типа проекта (рис. 2).

В данном окне в типах проектов (Projects types) следует выбрать пункт Win32, а в шаблонах (Templates) Win32 Console Application.

Все эти пункты показаны на рис. 2.

 
  Библиотечные заголовочные файлы ANSI Си. - student2.ru

       
  Библиотечные заголовочные файлы ANSI Си. - student2.ru
    Библиотечные заголовочные файлы ANSI Си. - student2.ru
 

После этого внизу окна в поле Name (имя) следует ввести имя проекта (английскими буквами), например, lab 1, а в поле Location (расположение) указать папку, в которой будет располагаться проект, например, D:\temp. После заполнения всех указанных полей и нажатия на кнопку «OK» на экране появится окно настройки выбранного консольного проекта (рис. 3).

 
  Библиотечные заголовочные файлы ANSI Си. - student2.ru

Здесь достаточно нажать на кнопку «Finish», после чего будет создан проект, а в главном окне появится список файлов консольного проекта (рис 4).

 
  Библиотечные заголовочные файлы ANSI Си. - student2.ru

Слева в окне отображен список файлов проекта, из которых интерес представляет лишь файл lab1.cpp, т.к. в нем пишется непосредственно программа на языке C. Справа открыт файл lab1.cpp, в котором используется стандартный заголовочный файл проекта stdafx.h и главная функция программы _tmain() (аналог функции main()).

Вся логика программы должна заключаться внутри функции _tmain() .

Для того чтобы сохранить проект на внешнем носителе, например, Flash, необходимо открыть ранее указанную папку при создании проекта и в ней скопировать каталог с названием проекта, в данном случае - это каталог с именем lab1.

Чтобы загрузить ранее созданный проект в среду Visual Studio 2008 достаточно открыть пункт меню

File->Open->Project/Solution и в диалоговом окне указать файл проекта, находящегося в папке проекта, в данном случае - это папка lab1.

Для запуска и компиляции программы, написанной в данной среде, используется команда меню

Debug->Start Without Debugging или комбинация клавиш Ctrl+F5.

После запуска программы на экране появится окно консоли с результатом выполнения программы (рисунок 5):

       
  Библиотечные заголовочные файлы ANSI Си. - student2.ru
    Библиотечные заголовочные файлы ANSI Си. - student2.ru
 

Таким образом можно создавать проекты для лабораторной работы.

2. Написать программу с использованием функций printf() и scanf() в соответствии с номером своего варианта.

Варианты заданий.

Наши рекомендации