Программирование. Принципы и практика использования C++ Исправленное издание, стр. 432
Б.9.5. Обобщенные числовые алгоритмы
Эти алгоритмы из раздела
<numeric>
Б.10. Функции стандартной библиотеки языка С
Стандартная библиотека языка С включена в стандартную библиотеку языка С++ с минимальными изменениями. В ней предусмотрено относительно небольшое количество функций, полезность которых подтверждена многолетним опытом использования в разнообразных предметных областях, особенно в низкоуровневом программировании. Библиотека языка С разделена на несколько категорий.
• Ввод-вывод в стиле языка C.
• Строки в стиле языка C.
• Управление памятью.
• Дата и время.
• Остальное.
Библиотека языка С содержит намного больше функций, чем описано в этой книге; рекомендуем читателям обратиться к хорошим учебникам по языку С, например, к книге Kernighan, Ritchie, The C Programming Language (K&R).
Б.10.1. Файлы
Система ввода-вывода, описанная в заголовке
<stdio>FILE*stdinstdoutstderr
Режим — это строка, содержащая одну или несколько директив, определяющих, как именно должен быть открыт файл.

В конкретной операционной системе может быть (и, как правило, так и есть) больше возможностей. Некоторые режимы могут комбинироваться, например, инструкция
fopen("foo","rb")foostdioiostreamБ.10.2. Семейство функций printf()
Наиболее популярными функциями в стандартной библиотеке языка С являются функции ввода-вывода. Тем не менее рекомендуем использовать библиотеку
iostreamprintf()
В каждой версии число
nprintf()Объявление функции
printf()int printf(const char* format ...);Иначе говоря, эта функция получает строку в стиле языка С (как правило, строковый литерал), за которой следует список, состоящий из произвольного количества аргументов произвольного типа. Смысл этих дополнительных аргументов задается спецификаторами преобразования в форматной строке, например
%c%dint x = 5;const char* p = "asdf";printf("Значение x равно '%d', а значение p равно '%s'\n",x,s);Символ, следующий за знаком
%%%dx%%spprintf()Значение x равно '5', а значение p равно 'asdf'Затем происходит переход на новую строку.
В принципе соответствие между директивой преобразования
%printf("Значение x равно '%s', а значение p равно '%d'\n",x,p); // ой!Набор спецификаторов преобразования довольно велик и обеспечивает большую гибкость (а также много возможностей сделать ошибку). За символом
%
Нулевая или слишком маленькая ширина поля никогда не приводит к усечению вывода; дополнение вывода нулями или пробелами производится только тогда, когда заданная ширина поля превышает реальную.
Поскольку в языке C нет пользовательских типов в смысле языка C++, в нем нет возможностей для определения форматов вывода для таких классов, как
complexvectorstringСтандартный поток вывода
stdoutcoutstdincinstderrcerrcoutstdoutstdioiostreamios_base::sync_with_stdio(false)stdioscanf()printf()