- •Отображает данные, вводимые в ручную, во время обработки с устройств любого типа (клавиатура, переключатели, кнопки, световое перо, полоски со штрих кодом и т.д.).
- •Символ отображает хранимые данные в виде, пригодном для обработки. Носитель данных не определен. В схемах алгоритмов он предназначен для обозначения ввода-вывода данных в случае использования запоминающего устройства, управляемого процесса.
- •Тема 1. Основные этапы решения задач на ЭВМ
- •Постановка задачи разработки программного обеспечения
- •Анализ формальной постановки задачи
- •Выбор или разработка математической модели и метода решения
- •Разработка алгоритма
- •Базовые структуры алгоритма
- •Тема 2. Жизненный цикл программы. Критерии качества программы.
- •Техническое задание и спецификация программы
- •Разработка проекта программной системы
- •Программирование (кодирование) или программная реализация алгоритмов
- •Тестирование и отладка
- •Эксплуатация и сопровождение
- •Критерии качества программного обеспечения
- •Тема 3. Схемы алгоритмов, данных, программ
- •Символы данных
- •Символы процесса
- •Символы линий
- •Специальные символы
- •Правила применения символов в схемах
- •Правила выполнения соединений
- •Специальные условные обозначения
- •Тема 4. Язык программирования высокого уровня Си
- •Общие сведения о языке Си
- •Алфавит языка Си
- •Грамматика для описания языка, синтаксические диаграммы
- •Структура программы на языке Си
- •Имена объектов в программе
- •Выражения, операции и приоритеты
- •Тема 5. Стандартные типы данных
- •Тема 6. Составные типы данных
- •Данные регулярного типа (массивы)
- •Строки
- •Данные комбинированного типа (структуры)
- •Перечисления
- •Объединения
- •Указатели
- •Тема 7. Представление основных управляющих структур программирования
- •Оператор присваивания
- •Составной оператор
- •Оператор перехода Goto
- •Условный оператор If
- •Оператор выбора switch
- •Операторы цикла while, do – while, for
- •Операторы прерывания циклов
- •Форматированный ввод данных
- •Форматированный вывод данных
- •Преобразование типов
- •Инициализация данных
- •Тема 8. Функции
- •Определение функций в языке Си
- •Вызов функций в языке Си
- •Рекурсивные функции
- •Тема 9. Файлы
- •Тема 10. Приемы программирования. Примеры алгоритмов
- •Алгоритмы сортировки
- •Алгоритмы поиска
- •Динамические структуры данных
- •Линейные списки
- •Стек, очередь, дек
- •Деревья
- •Приложение 1. Стандартные библиотеки языка Си
- •Приложение 2. Примеры реализации алгоритмов
- •Не рекурсивный алгоритм решения задачи Ханойская башня.
- •Рекурсивный алгоритм решения задачи Ханойская башня.
- •Приложение 3. Лабораторные работы
- •Лабораторная работа №1
- •Лабораторная работа №2
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
- •Лабораторная работа №7
- •Лабораторная работа №8
- •Лабораторная работа №9
- •Лабораторная работа №10
- •Лабораторная работа №11
- •Лабораторная работа №12
- •Список литературы
сравнивать левые и правые поддеревья. Фактически функция осуществляет обход дерева сверху вниз. Выходом из рекурсии в данном случае будет сравнение значений указателей (в том числе и пустых). Для равных деревьев одновременно указатели будут обнулены и станут равными. В случае различия, это равенство не пройдет. Если же оба указателя отличны от пустых, т.е. указывают на поддеревья, то сравниваются их информационные части и соответственно левые и правые потомки. Если все эти три сравнения совпадают, то делается заключение о совпадении сравниваемых деревьев.
Напишем функцию, которая будет выдавать истинное значение, если два дерева равны, и ложное значение в противном случае.
bool TreeEqual(tree *p1, tree *p2)
{
}
Приложение 1. Стандартные библиотеки языка Си
В языке Си стандартные функции собраны в различных библиотеках. Для использования этих функций необходимо подключить к проекту соотаетствующие библиотеки с помощью конструкции #include. Ниже представлены некоторые библиотеки языка Си, а также их состав.
|
Таблица 19. |
|
|
Библиотеки языка Си |
|
Имя |
Назначение библиотеки |
|
complex.h |
Набор функций для работы с комплексными числами |
|
ctype.h |
Содержит функции, используемые для классификации символов по их |
|
типам или для конвертации между верхним и нижним регистрами |
||
errno.h |
независимо от используемой кодировки |
|
Для проверки кодов ошибок, возвращаемых библиотечными функциями |
||
iostream |
Содержит функции контроля чтения и записи стандартных потоков |
|
limits.h |
Содержит заранее заданные константы, определяющие специфику |
|
реализации свойств целых типов |
||
signal.h |
||
Функции для управления различными исключительными условиями |
||
math.h |
Функции для вычисления основных математических функций |
|
stdio.h |
Реализует основные возможности ввода и вывода в языке Си |
|
stdlib.h |
Вспомогательные функции, которые могут быть использованы в |
|
разнообразных программах |
||
string.h |
||
Для работы с различными видами строк |
168
time.h |
Для конвертации между различными форматами времени и даты |
||
|
|
|
Таблица 20. |
|
|
|
Состав библиотеки complex.h |
Имя функции |
|
Описание |
|
cabs, cabsf, cabsl |
|
Абсолютное значение комплексного числа |
|
cacos, cacosf, cacosl |
|
Комплексный арккосинус |
|
cacosh, cacoshf, cacoshl |
Комплексный гиперболический арккосинус |
||
carg, cargf, cargl |
|
Аргумент комплексного числа |
|
casin, casinf, casinl |
|
Комплексный арксинус |
|
casinh, casinhf, casinhl |
Комплексный гиперболический арксинус |
||
catan, catanf, catanl |
|
Комплексный арктангенс |
|
catanh, catanhf, catanhl |
Комплексный гиперболический арктангенс |
||
ccos, ccosf, ccosl |
|
Комплексный косинус |
|
ccosh, ccoshf, ccoshl |
|
Комплексный гиперболический косинус |
|
cexp, cexpf, cexpl |
|
Комплексная экспонента |
|
cimag, cimagf, cimagl |
|
Мнимая часть комплексного числа |
|
clog, clogf, clogl |
|
Натуральный логарифм комплексного числа |
|
conj, conjf, conjl |
|
Комплексное сопряжённое число |
|
cpow, cpowf, cpowl |
|
Степень комплексного числа |
|
cproj, cprojf, cprojl |
|
Проекция на римановскую сферу |
|
creal, crealf, creall |
|
Действительная часть комплексного числа |
|
csin, csinf, csinl |
|
Комплексный синус |
|
csinh, csinhf, csinhl |
|
Комплексный гиперболический синус |
|
csqrt, csqrtf, csqrtl |
|
Комплексный квадратный корень |
|
ctan, ctanf, ctanl |
|
Комплексный тангенс |
|
ctanh, ctanhf, ctanhl |
|
Комплексный гиперболический тангенс |
|
|
|
|
Таблица 21. |
|
|
|
Состав библиотеки ctype.h |
Имя функции |
|
|
Проверяет, является ли аргумент… |
isalnum |
|
…буквой или цифрой |
|
isalpha |
|
…буквой |
|
iscntrl |
|
…управляющим символом |
|
isdigit |
|
…цифрой |
|
isgraph |
|
…символом, имеющим графическое представление |
|
islower |
|
…буквой в нижнем регистре |
|
isprint |
|
…символом, который может быть напечатан |
|
ispunct |
|
…символом, имеющим графическое представление, но не |
|
|
являющимся при этом буквой или цифрой |
||
isspace |
|
||
|
…разделительным символом |
||
isupper |
|
…буквой в верхнем регистре |
|
isxdigit |
|
…цифрой шестнадцатиричной системы счисления |
|
|
|
|
Таблица 22. |
|
|
|
Состав библиотеки errno.h |
Имя функции |
|
|
Описание |
E2BIG |
|
Список аргументов слишком длинный |
|
EACCES |
|
Отказ в доступе |
|
EAGAIN |
|
Ресурс временно недоступен |
|
EBADF |
|
Неправильный дескриптор файла |
|
EBADMSG |
|
Неправильное сообщение |
169
EBUSY |
Ресурс занят |
ECANCELED |
Операция отменена |
ECHILD |
Нет дочернего процесса |
EDEADLK |
Обход тупика ресурсов |
EDOM |
Ошибка области определения |
EEXIST |
Файл существует |
EFAULT |
Неправильный адрес |
EFBIG |
Файл слишком велик |
EINPROGRESS |
Операция в процессе выполнения |
EINTR |
Прерванный вызов функции |
EINVAL |
Неправильный аргумент |
EIO |
Ошибка ввода-вывода |
EISDIR |
Это каталог |
EMFILE |
Слишком много открытых файлов |
EMLINK |
Слишком много связей |
EMSGSIZE |
Неопределённая длина буфера сообщения |
ENAMETOOLONG |
Имя файла слишком длинное |
ENFILE |
Слишком много открытых файлов в системе |
ENODEV |
Нет такого устройства |
ENOENT |
Нет такого файла в каталоге |
ENOEXEC |
Ошибка формата исполняемого файла |
ENOLCK |
Блокировка недоступна |
ENOMEM |
Недостаточно памяти |
ENOSPC |
Памяти на устройстве не осталось |
ENOSYS |
Функция не реализована |
ENOTDIR |
Это не каталог |
ENOTEMPTY |
Каталог непустой |
ENOTSUP |
Не поддерживается |
ENOTTY |
Неопределённая операция управления вводом-выводом |
ENXIO |
Нет такого устройства или адреса |
EPERM |
Операция не разрешена |
EPIPE |
Разрушенный канал |
ERANGE |
Результат слишком велик |
EROFS |
Файловая система только на чтение |
ESPIPE |
Неправильное позиционирование |
ESRCH |
Нет такого процесса |
ETIMEDOUT |
Операция задержана |
EXDEV |
Неопределённая связь |
|
Таблица 23. |
|
Состав библиотеки iostream.h |
Имя функции |
Описание |
cin |
Соответствует стандартному вводу. В общем случае он позволяет |
cout |
читать данные с терминала пользователя |
Соответствует стандартному выводу. В общем случае он позволяет |
|
cerr |
выводить данные на терминал пользователя |
Соответствует стандартному выводу для ошибок. В этот поток мы |
|
|
направляем сообщения об ошибках программы |
|
Таблица 24. |
|
Состав библиотеки limits.h |
170
|
|
|
|
Типичное |
Типичное |
|
Стандартный |
|
Имя |
|
Описание |
|
значение 32- |
значение 64- |
|
минимум или |
|
|
|
битной |
битной |
|
максимум |
|||
|
|
|
|
|
||||
|
|
|
|
программы |
программы |
|
диапазона значений |
|
CHAR_BIT |
|
Число бит в байте |
|
8 |
8 |
|
|
≥ 8 |
SCHAR_MIN |
|
Минимальное значение |
|
−128 |
−128 |
|
≤ -127 |
|
|
для знакового char |
|
|
|||||
SCHAR_MAX |
|
Максимальное значение |
|
+127 |
+127 |
|
|
≥ +127 |
|
для знакового char |
|
|
|
||||
UCHAR_MAX |
|
Максимальное значение |
|
+255 |
+255 |
|
|
≥ +255 |
|
для беззнакового char |
|
|
|
||||
CHAR_MIN |
|
Минимальное значение |
|
|
|
|
|
≤ -127(если char |
|
|
−128 |
−128 |
|
представлено как знаковый |
|||
|
для char |
|
|
|||||
|
|
|
|
|
|
|
|
char; иначе 0) |
CHAR_MAX |
|
Максимальное значение |
|
|
|
|
|
≥ +127 (если char |
|
|
+127 |
+127 |
|
|
представлено как знаковый |
||
|
для char |
|
|
|
||||
|
|
|
|
|
|
|
|
char; иначе +255) |
|
|
Максимальная |
|
|
|
|
|
|
MB_LEN_MAX |
|
многобайтовая длина |
|
различается, |
различается, |
|
≥ 1 |
|
|
символа по всем |
|
обычно от 4 |
обычно от 4 |
|
|||
|
|
локалям |
|
|
|
|
|
|
SHRT_MIN |
|
Минимальное значение |
|
−32,768 |
−32,768 |
|
≤ -32,767 |
|
|
для short int |
|
|
|||||
SHRT_MAX |
|
Максимальное значение |
|
+32,767 |
+32,767 |
|
|
≥ +32,767 |
|
для short int |
|
|
|
||||
USHRT_MAX |
|
Максимальное значение |
|
|
|
|
|
≥ +65,535 |
|
для беззнакового short |
|
+65,535 |
+65,535 |
|
|
||
|
|
int |
|
|
|
|
|
|
INT_MIN |
|
Минимальное значение |
|
−2,147,483,648 |
−2,147,483,648 |
|
≤ -32,767 |
|
|
для int |
|
|
|||||
INT_MAX |
|
Максимальное значение |
|
+2,147,483,647 |
+2,147,483,647 |
|
|
≥ +32,767 |
|
для int |
|
|
|
||||
UINT_MAX |
|
Максимальное значение |
|
+4,294,967,295 |
+4,294,967,295 |
|
|
≥ +65,535 |
|
для беззнакового int |
|
|
|
||||
LONG_MIN |
|
Минимальное значение |
|
−2,147,483,648 |
−9,223,372,036,854 |
|
≤ -2,147,483,647 |
|
|
для long int |
|
,775,808 |
|
|
|||
LONG_MAX |
|
Максимальное значение |
|
+2,147,483,647 |
+9,223,372,036,854 |
|
≥ +2,147,483,647 |
|
|
для long int |
|
,775,807 |
|
|
|||
ULONG_MAX |
|
максимальное значение |
|
|
+18,446,744,073,70 |
|
≥ +4,294,967,295 |
|
|
для беззнакового long |
|
+4,294,967,295 |
|
||||
|
|
9,551,615 |
|
|
||||
|
|
int |
|
|
|
|
|
|
LLONG_MIN |
|
Минимальное значение |
|
−9,223,372,036,85 |
−9,223,372,036,854 |
|
≤ -9,223,372,036,854,775,807 |
|
|
для long long int |
|
4,775,808 |
,775,808 |
|
|
||
LLONG_MAX |
|
Максимальное значение |
|
+9,223,372,036,85 |
+9,223,372,036,854, |
|
≥ +9,223,372,036,854,775,807 |
|
|
для long long int |
|
4,775,807 |
775,807 |
|
|
||
ULLONG_MAX |
|
максимальное значение |
|
+18,446,744,073,7 |
+18,446,744,073,70 |
|
|
≥ +18,446,744,073,709,551,61 |
|
для беззнакового long |
|
|
|
||||
|
|
09,551,615 |
9,551,615 |
|
|
5 |
||
|
|
long int |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 25. |
|
|
|
|
|
|
|
|
Состав библиотеки limits.h |
Константа |
|
|
|
Значение |
|
|
|
Стандарты |
SIGHUP |
|
Отбой |
|
|
|
POSIX |
||
SIGINT |
|
Прерывание |
|
|
|
ANSI |
||
SIGQUIT |
|
Выход |
|
|
|
POSIX |
||
SIGILL |
|
Недопустимая инструкция |
|
|
ANSI |
|||
SIGABRT |
|
Самоостановка |
|
|
|
ANSI |
||
SIGTRAP |
|
Перехват события |
|
|
|
POSIX |
||
SIGIOT |
|
Перехват ввода-вывода |
|
|
4.2 BSD |
|||
SIGEMT |
|
Перехват эмуляции |
|
|
|
4.2 BSD |
||
SIGFPE |
|
Исключение с плавающей запятой |
|
|
ANSI |
|||
SIGKILL |
|
Неперехватываемый сигнал завершения |
|
POSIX |
171
SIGBUS |
Ошибка шины |
4.2 BSD |
SIGSEGV |
Нарушение сегментации |
ANSI |
SIGSYS |
Неправильный аргумент в системный вызов |
4.2 BSD |
SIGPIPE |
Нарушение канала |
POSIX |
SIGALRM |
Истечение времени |
POSIX |
SIGTERM |
Заверешние |
ANSI |
SIGUSR1 |
Пользовательский сигнал 1 |
POSIX |
SIGUSR2 |
Пользовательский сигнал 2 |
POSIX |
SIGCHLD |
Изменение статуса дочернего процесса |
POSIX |
SIGCLD |
Аналогично SIGCHLD |
System V |
SIGPWR |
Перезапуск после проблемы с питанием |
System V |
SIGXCPU |
Ограничение процессорного времени |
POSIX |
|
|
Таблица 26. |
Имя функции |
Описание |
Состав библиотеки math.h |
|
||
acos |
арккосинус |
|
asin |
арксинус |
|
atan |
арктангенс |
|
atan2 |
арктангенс с двумя параметрами |
|
ceil |
округление до ближайшего большего целого числа |
|
cos |
косинус |
|
cosh |
гиперболический косинус |
|
exp |
вычисление экспоненты |
|
fabs |
абсолютная величина (числа с плавающей точкой) |
|
floor |
округление до ближайшего меньшего целого числа |
|
fmod |
вычисление остатка от деления нацело для чисел с плавающей точкой |
|
frexp |
разбивает число с плавающей точкой на мантиссу и показатель степени. |
|
ldexp |
умножение числа с плавающей точкой на целую степень двух |
|
log |
натуральный логарифм |
|
log10 |
логарифм по основанию 10 |
|
modf(x,p) |
извлекает целую и дробную части (с учетом знака) из числа с плавающей |
|
точкой |
|
|
pow(x,y) |
|
|
результат возведения x в степень y, xy |
|
|
sin |
синус |
|
sinh |
гиперболический синус |
|
sqrt |
квадратный корень |
|
tan |
тангенс |
|
tanh |
гиперболический тангенс |
|
|
|
Таблица 27. |
Имя функции |
Описание |
Состав библиотеки stdio.h |
|
||
fclose |
Функции для файловых операций |
|
закрывает файл, ассоциированный с переданным ей значением FILE * |
||
fopen, freopen, |
открывают файл для определенных типов чтения и записи |
|
fdopen |
|
|
remove |
удаляет файл (стирая его) |
|
rename |
переименовывает файл |
|
172
rewind |
работает аналогично fseek(stream, SEEK_SET), вызванному для потока, со |
||
сбросом индикатора ошибок |
|||
|
|||
tmpfile |
создает и открывает временный файл, удаляемый при закрытии через |
|
|
fclose() |
|||
|
|
Функции для операций ввода-вывода |
|
clearerr |
очищает EOF и индикаторы ошибок для данного потока |
|
feof |
проверяет, установлен ли индикатор EOF для данного потока |
|
ferror |
проверяет, установлен ли индикатор ошибок для данного потока |
|
fflush |
принудительно записывает вывод, предназначенный для помещения в |
|
буфер, в файл, ассоциированный с данным потоком |
||
|
||
fgetpos |
сохраняет позицию указателя файла потока, ассоциированный с его |
|
первым аргументом (FILE *), в его второй аргумент (fpos_t *) |
||
|
||
fgetc |
возвращает один символ из файла |
|
fgets |
получает строку из файла (оканчивающуюся символом перевода строки |
|
или конца файла) |
||
|
||
fputc |
записывает один символ в файл |
|
fputs |
записывает строку в файл |
|
ftell |
возвращает указатель позиции файла, который может быть передан fseek |
|
fseek |
производит поиск по файлу |
|
fsetpos |
устанавливает указатель позиции файла потока, ассоциированный с его |
|
первым аргументом (FILE *), как хранимый во втором его аргументе |
||
|
(fpos_t *) |
|
fread |
читает данные из файла |
|
fwrite |
записывает данные в файл |
|
|
считывает и возвращает символ из данного потока и изменяет укащатель |
|
getc |
позиции файла; позволяет использоваться как макрос с теми же |
|
эффектами, что и fgetc, кроме того, что может вычислять поток более |
||
|
||
|
одного раза |
|
getchar |
имеет аналогичный эффект, что и getc(stdin) |
|
gets |
считывает символы из stdin до символа перевода строки и хранит их в |
|
своем единственном аргументе |
||
|
||
printf, vprintf |
используются для вывода в стандартный поток вывода |
|
fprintf, |
используются для вывода в файл |
|
vfprintf |
|
|
sprintf, |
|
|
snprintf, |
используются для вывода в массив типа char (Строка в языке Си) |
|
vsprintf |
|
|
perror |
записывает сообщение об ошибке в stderr |
|
putc |
записывает и возвращает символ в поток и изменяет указатель позиции |
|
файла на него; можно использовать как макрос с теми же свойствами, что |
||
|
и fputc, кроме того, что он может обрабатывать поток более одного раза |
|
putchar, |
аналогичны putc(stdout) |
|
fputchar |
||
scanf, vscanf |
используются для ввода из стандартного потока ввода |
|
fscanf, vfscanf |
используются для ввода из файла |
|
sscanf, vsscanf |
используются для ввода из массива char (то есть Строка в языке Си) |
|
setvbuf |
устанавливает режим буферизации для данного потока |
|
tmpnam |
создает временное имя файла |
|
ungetc |
помещает символ обратно в поток |
173
|
|
|
|
|
puts |
|
выводит символьную строку в stdout |
||
|
|
|
Таблица 28. |
|
|
|
|
Состав библиотеки stdlib.h |
|
Имя функции |
|
Описание |
Реализация |
|
abort |
Ненормальное завершение |
void abort(void); |
|
|
программы |
|
|||
|
|
|
||
abs |
Модуль целого числа |
int abs(int i); |
|
|
assert |
Макроопределение для вывода |
void assert(int expression); |
|
|
отладочных диагностических |
|
|||
|
сообщений |
|
|
|
atexit |
Запрос вызова функции при |
int atexit(void (*function)(void); |
|
|
завершении работы |
|
|||
|
программы |
|
|
|
atof, atoff |
Преобразование строки в |
double atof(const char *s); |
|
|
значение типа double или float |
float atoff(const char *s); |
|
||
atii, atol |
Строка в целое |
int atoi(const char *s); |
|
|
long atol(const char *s); |
|
|||
atol |
Преобразовывает строку в long |
long atol(const char *s); |
|
|
|
|
|
void *bsearch(const void *key, const |
|
bsearsh |
Двоичный поиск |
void *base, size_t nmemb, size_t size, |
|
|
int (*compar)(const void *, const void |
|
|||
|
|
|
*)); |
|
calloc |
Выделяет пространство для |
void *calloc(size_t n, size_t s); |
|
|
массивов |
void *calloc_r(void *reent, size_t <n>, |
|
||
|
<size_t> s); |
|
||
div |
Деление двух целых |
div_t div(int n, int d); |
|
|
ecvt, |
|
|
char *ecvt(double val, int chars, int |
|
Преобразование double или |
*decpt, int *sgn); |
|
||
ecvtf, |
|
|||
float в строку |
char *ecvtf(float val, int chars, int |
|
||
fcvt, fcvtf |
|
|||
|
|
*decpt, int *sgn); |
|
|
gvcvt, |
Форматируют double и float |
char *gcvt(double val, int precision, |
|
|
char *buf); |
|
|||
gcvtf |
как строку |
char *gcvtf(float val, int precision, |
|
|
|
|
|
char *buf); |
|
ecvtbuf, |
|
|
char *ecvtbuf(double val, int chars, |
|
Double или float в строку |
int *decpt, int *sgn, char *buf); |
|
||
fcvtbuf |
char *fcvtbuf(double val, int decimals, |
|
||
|
|
|
int *decpt, int *sgn, char *buf); |
|
exit |
Завершение выполнения |
void exit(int code); |
|
|
программы |
|
|||
|
|
|
||
getenv |
Поиск переменной окружения |
char *getenv(const char *name); |
|
|
labs |
Модуль длинного целого |
long labs(long i); |
|
|
ldiv |
Деление двyх длинных целых |
ldiv_t ldiv(long n, long d); |
|
|
malloc, |
|
|
void *malloc(size_t nbytes); |
|
|
|
void *realloc(void *aptr, size_t |
|
|
realloc, |
Управление памятью |
|
||
nbytes); |
|
|||
free |
|
|
|
|
|
|
void free(void *aptr); |
|
|
|
|
|
|
|
mbtowc |
Минимальный |
int mbtowc(wchar_t *pwc, const char *s, |
|
|
преобразователь мультибайтов |
|
|||
|
в широкие символы |
size_t n); |
|
|
|
|
|
||
qsort |
|
|
void qsort(void *base, size_t nmemb, |
|
Сортировка массива |
size_t size,int (*compar)(const void *, |
|
||
|
|
|
const void *) ); |
|
174
|
|
|
|
|
|
int rand(void); |
|
|
|
void srand(unsigned int seed); |
|
rand, srand |
Псевдо-случайные числа |
int _rand_r(void *reent); |
|
void _srand_r(void *reent, unsigned int |
|
||
|
|
seed); |
|
|
|
|
|
|
|
double strtod(const char *str, char |
|
strtod, |
|
**tail); |
|
Строка в double или float |
float strtodf(const char *str, char |
|
|
strtodf |
**tail); |
|
|
|
|
double _strtod_r(void *reent, const |
|
|
|
char *str, char **tail); |
|
strtol |
Строка в long |
ong strtol(const char *s, char |
|
**ptr,int base); |
|
||
strtoul |
Строка в unsigned long |
unsigned long strtoul(const char *s, |
|
char **ptr, int base); |
|
||
system |
Выполняет командную строку |
int system(char *s); |
|
int _system_r(void *reent, char *s); |
|
||
|
|
|
|
wctomb |
Минимальный |
int wctomb(char *s, wchar_t wchar); |
|
преобразователь широких |
|
||
|
символов в мультибайты |
|
|
|
|
Таблица 29. |
|
|
|
Состав библиотеки string.h |
|
|
Имя функции |
Описание |
|
void *memcpy(void *dest, const void |
Копирует n байт из области памяти src в dest, |
|
|
которые не должны пересекаться, в противном |
|
||
*src, size_t n); |
случае результат неопределен (возможно как |
|
|
|
|
правильное копирование, так и нет) |
|
void *memmove(void *dest, const void |
Копирует n байт из области памяти src в dest, |
|
|
которые в отличие от memcpy могут |
|
||
*src, size_t n); |
|
||
|
|
перекрываться |
|
void *memchr(const void *s, char c, |
Возвращает указатель на первое вхождение c в |
|
|
size_t n); |
|
первых n байтах s, или NULL, если не найдено |
|
int memcmp(const void *s1, const void |
Сравнивает первые n символов в областях |
|
|
*s2, size_t n); |
памяти |
|
|
void *memset(void *, int z, size_t); |
Заполняет область памяти одним байтом z |
|
|
char *strcat(char *dest, const char |
Дописывает строку src в конец dest |
|
|
*src); |
|
|
|
char *strncat(char *, const char *, |
Дописывает не более n начальных симолов |
|
|
строки src (или всю src, если ее длина меньше) в |
|
||
size_t); |
|
|
|
|
|
конец dest |
|
char *strchr(const char *, int); |
Ищет символ в строке, начиная с головы и |
|
|
возращает его адрес, или NULL если не найден |
|
||
|
|
|
|
char *strrchr(const char *, int); |
Ищет символ в строке, начиная с хвоста и |
|
|
возращает его адрес, или NULL если не найден |
|
||
|
|
|
|
int strcmp(const char *, const char |
Лексикографическое сравнение строк |
|
|
*); |
|
|
|
int strncmp(const char *, const char |
Лексикографическое сравнение первых n байтов |
|
|
*, size_t); |
|
строк |
|
int strcoll(const char *, const char |
Лексикографическое сравнение строк с учетом |
|
|
*); |
|
локали collating order |
|
char *strcpy(char *toHere, const char |
Копирует строку из одного места в другое |
|
|
*fromHere); |
|
|
|
175