- •СПбГУТ им. проф. М.А. Бонч-Бруевича Кафедра программной инженерии и вычислительной техники (ПИ и
- •1. Общая характеристика языка Си
- •Рейтинг TIOBE Index
- •Рейтинг IEEE Spectrum
- •Рейтинг Stack Overflow
- •Общая характеристика языка Си
- •Структура программы на языке Си
- •Структура программы на языке Си
- •Компиляция и интерпретация
- •Структура программы на языке Си
- •2. Директивы препроцессора
- •Директивы препроцессора. Макроопределения и макровызовы
- •3. Понятие о функции
- •Понятие о функции
- •Понятие о функции
- •Простейшие средства ввода-вывода
- •5. Простейшие средства ввода-вывода
- •Простейшие средства ввода-вывода
- •Простейшие средства ввода-вывода
- •Справочно: Форматированный вывод данных. Функция printf( )
- •Справочно: Форматированный ввод данных. Функция scanf( )
Справочно: Форматированный вывод данных. Функция printf( )
Функция printf( ) (прототип содержится в файле stdio.h) обеспечивает форматированный вывод.
Ее можно записать в следующем формальном виде:
рrintf ("управляющая строка", аргумент _1, аргумент _2,...);
Управляющая строка содержит компоненты трех типов:
1) обычные символы, которые просто копируются в стандартный выходной поток (выводятся на экран дисплея);
2) спецификации преобразования, каждая из которых вызывает вывод на экран очередного аргумента из последующего списка;
3) управляющие символьные константы.
Каждая спецификация преобразования начинается со знака % и заканчивается некоторым символом, задающим преобразование.
Между знаком % и символом преобразования могут встречаться другие знаки в соответствии со следующим форматом:
% [признаки] [ширина_поля] [точность] [F|N|h|l|L] c_n
Все параметры в квадратных скобках не являются обязательными.
На месте параметра c_n (символ преобразования) могут быть записаны:
с - значением аргумента является символ;
d или i - значением аргумента является десятичное целое число;
е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида 1.23e+2;
Е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида 1.23E+2;
f - значением аргумента является вещественное десятичное число с плавающей точкой;
g (или G) - используется, как е или f, и исключает вывод незначащих нулей;
о - значением аргумента является восьмеричное целое число; s - значением аргумента является строка символов (символы
строки выводятся до тех пор, пока не встретится символ конца строки или же не будет, выведено число символов, заданное точностью);
u - значением аргумента является беззнаковое целое число; х - значением аргумента является шестнадцатеричное целое
число с цифрами 0,..., 9, а, b, с, d, е, f;
X - значением аргумента является шестнадцатеричное целое число с цифрами 0,..., 9, А, В, С, О, Е, F;
р - значением аргумента является указатель;
n - применяется в операциях форматирования. Аргумент, соответствующий этому символу спецификации, должен быть указателем на целое. В него возвращается номер позиции строки (отображаемой на экране), в которой записана спецификация %n.
21
Справочно: Форматированный ввод данных. Функция scanf( )
|
Функция scanf( ) (прототип содержится в файле stdio.h) |
f - на входе ожидается вещественное число с плавающей |
|
обеспечивает форматированный ввод. |
точкой; |
||
g или G - на входе ожидается вещественное число с |
|||
|
Ее можно записать в следующем формальном виде: |
||
|
плавающей точкой; |
||
|
scanf("управляющая строка", аргумент_1, аргумент_2,...); |
о - на входе ожидается восьмеричное целое число и аргумент |
|
|
является указателем на переменную типа int; |
||
|
|
О - на входе ожидается восьмеричное целое число и аргумент |
|
|
Аргументы scanf( ) должны быть указателями на соответствующие |
является указателем на переменную типа long; |
|
значения. |
s - на входе ожидается появление строки символов; |
||
х - на входе ожидается шестнадцатеричное целое число и |
|||
|
Для этого перед именем переменной записывается символ &. |
||
|
аргумент является указателем на переменную типа int; |
||
Назначение указателей будет рассмотрено далее. |
|||
Х - на входе ожидается шестнадцатеричное целое число и |
|||
|
Управляющая строка содержит спецификации преобразования и |
аргумент является указателем на переменную типа long; |
|
используется для установления количества и типов аргументов. В нее |
р - на входе ожидается появление указателя в виде |
||
могут включаться: |
шестнадцатеричного числа; |
||
|
пробелы, символы табуляции и перехода на новую строку (все они |
n - применяется в операциях форматирования. Аргумент, |
|
|
игнорируются); |
соответствующий этому символу спецификации, должен быть |
|
|
указателем на целое. В него возвращается номер позиции (после |
||
спецификации преобразования, состоящие из знака %, возможно, |
|||
ввода), в которой записана спецификация %n; |
|||
|
символа * (запрещение присваивания), возможно, числа, |
||
|
u - на входе ожидается беззнаковое целое число и аргумент |
||
|
задающего максимальный размер поля, и самого символа |
является указателем на переменную типа unsigned int; |
|
|
преобразования; |
U - на входе ожидается беззнаковое целое число и аргумент |
|
обычные символы, кроме % (считается, что они должны совпадать |
является указателем на переменную типа unsigned long; |
||
|
с очередными неизвестными символами во входном потоке). |
[ ] - сканирует входную строку для получения символов. |
|
|
|
Перед некоторыми символами преобразования могут |
|
|
Рассмотрим символы преобразования функции scanf( ) |
записываться следующие модификаторы: |
|
|
F - изменяет указатель, заданный по умолчанию, на указатель |
||
(указываются после символа %): |
|||
типа far; |
|||
|
с - на входе ожидается появление одиночного символа; |
||
|
N - изменяет указатель, заданный по умолчанию, на указатель |
||
|
d или i - на входе ожидается десятичное целое число и аргумент |
типа near; |
|
является указателем на переменную типа int; |
h - преобразует аргумент к типу short int (может записываться |
||
|
D или l - на входе ожидается десятичное целое число и аргумент |
перед символами d, i, о, u, х); |
|
является указателем на переменную типа long; |
l - преобразует аргумент к типу long int (может записываться |
||
|
е или Е - на входе ожидается вещественное число с плавающей |
перед символами d, i, o, u, x); |
точкой; |
L - преобразует аргумент к типу long double (может записываться |
|
перед символами е, f, g). |
|
|
|
22 |
|
|
|
23