
- •Руденко т.В. Сборник задач и упражнений по языку Си. ( учебное пособие для студентов II курса )
- •Предисловие
- •Типы, операции, выражения
- •Управление
- •3.1 Синтаксис и семантика операторов языка Си
- •Обработка числовых данных
- •Обработка символьных данных
- •Функции и структура программы
- •Указатели и массивы
- •Структуры, объединения
- •6.1 Основные сведения
- •6.2 Структуры и функции. Указатели на структуры.
- •6.3 Структуры со сылками на себя
- •Ввод-вывод
- •7.1 Стандартный ввод-вывод
- •7.2 Работа с файлами
- •Интерфейс с системой unix
- •Низкоуровневый ввод-вывод
- •Процессы, сигналы
- •8.2.1 Конвейер, перенаправление ввода-вывода
- •8.2.2 Сигналы. Фоновые процессы.
- •Задания практикума
- •Свойства транслятора
- •Калькулятор
- •Моделирование работы интерпретатора shell
- •Приложения
- •Библиотека стандартных функций языка с
- •Функции работы со строками
- •Функции проверки класса литер
- •Ввод-вывод
- •Операции над файлами
- •Форматный вывод
- •Литеры-спецификаторы и их смысл при выводе
- •Форматный ввод
- •Литеры-спецификаторы и их смысл при вводе
- •Функции ввода-вывода литер
- •Функции позиционирования файла
- •Математические функции
- •Функции общего назначения
- •Дальние переходы
- •10.2 Фрагменты стандарта языка Си
- •10.2.1 Классификация типов
- •10.2.2 Приоритеты и порядок выполнения операций
- •10.2.3 Арифметические преобразования при выполнении арифметических операций вида X op y
- •10.2.4 Арифметические преобразования при выполнении присваивания и явного приведения
- •10.2.6 Явное приведение ( тип т ) X
- •10.2.7 Адресная арифметика
- •10.3 Системные функции unix
- •10.3.1 Базисные средства ввода-вывода
- •10.3.2 Дополнительные средства ввода-вывода
- •10.3.3 Процессы, транспортеры, сигналы
- •Литература
- •Содержание
Форматный вывод
Функции форматного вывода осуществляют вывод информации в соответствии с форматом.
int fprintf ( FILE* stream, const char* format,...)
функция преобразует и пишет вывод в поток stream под управлением формата format. Возвращаемое значение - число записанных литер или, в случае ошибки, отрицательное значение.
Строка формата может содержать обычные литеры, которые копируются в выводной поток, и спецификации преобразования, которые вызывают преобразование и печать значений других аргументов в том порядке, как они перечислены. Каждая спецификация преобразования начинается символом % и заканчивается литерой-спецификатором преобразования. Между % и литерой-спецификатором могут быть расположены символы управления печатью ( в том порядке, в каком они перечислены ниже):
флаги
- указывает, что преобразованное значение аргумента должно быть прижато к левому краю поля;
+ предписывает указывать знак числа;
пробел если первая литера - не знак, то числу должен предшествовать пробел;
0 указывает, что числа должны дополняться ведущими нулями до всей ширины поля;
указывает на одну из следующих форм вывода: для о первой цифрой должен быть 0; для х или Х ненулевому результату должны предшествовать 0х или 0Х; для e, E, f, g и G вывод всегда должен содержать десятичную точку; для g и G хвостовые нули не отбрасываются.
число, определяющее минимальную ширину поля. Преобразованный аргумент будет напечатан в поле, размер которого не меньше указанной ширины. Если число литер, необходимых для представления значения аргумента, больше указанной ширины поля, то значение будет напечатано в поле большего размера; если меньше - поле будет дополнено слева (или справа, если число прижимается к левому краю). Поле дополняется пробелами (или нулями, если присутствует флаг дополнения нулями).
точка, отделяющая указатель ширины поля от указателя точности.
число, задающее точность, которое определяет максимальное количество литер, печатаемых из строки, или количество цифр после десятичной точки в преобразованиях e, E или f, или количество значащих цифр для g- или G-преобразования, или минимальное количество цифр при печати целого (до необходимой ширины поля число дополняется ведущими нулями).
модификаторы h, l или L. Литера h указывает, что соответствующий аргумент должен печататься как short или unsigned short; литера l - как long или unsigned long; литера L - как long double.
Литеры-спецификаторы и их смысл при выводе
-------------------------------------------------------------------------------------------------------
литера тип аргумента; вид печати
-------------------------------------------------------------------------------------------------------
d,i int; знаковая десятичная запись.
о int; беззнаковая восьмеричная запись ( без ведущего 0).
x,X int; беззнаковая шестнадцатиричная запись ( без ведущих 0x или 0X), в качестве цифр от 10 до 15 используются abcdef для x и ABCDEF для X.
u int; беззнаковое десятичное целое.
c int; единичная литера после преобразования в unsigned char.
s char *; литеры строки печатаются, пока не встретится ‘\0’ или не бу- дет напечатано количество литер, указанное точностью.
f double; десятичная запись вида [-]mmm.ddd, где количество d спе- цифицируется точностью. По умолчанию точность равна 6; нулевая точность подавляет печать десятичной точки.
e,E double; десятичная запись вида [-]m.ddddddexx или вида [-]m.ddddddExx, где d специфицируется точностью. По умолчанию точность равна 6; нулевая точность подавляет печать десятичной точки.
g,G double; используется %e и %E, если экспонента меньше 4 или боль- ше или равна точности; в противном случае используется %f. Хво- стовые нули и точка в конце не печатаются.
p void*; печатает в виде указателя ( представление зависит от реализа- ции).
% никакие аргументы не преобразуются; печатается %
int printf ( const char* format,...)
семантика функции полностью эквивалентна fprintf (stdout, const char* format,...)
int sprintf (char *s, const char* format,...)
sprintf действует так же, как и printf, только вывод осуществляется в строку s, которая завершается литерой ‘\0’. Строка s должна быть достаточно большой, чтобы вместить результат вывода. Возвращает количество записанных литер (без учета ‘\0’).