Язык си форматированный вывод + видео обзор

printf()

Вот прототип функции printf() :

Функция printf() возвращает число выведенных символов или отрицательное значение в случае ошибки.

В этом примере первому спецификатору преобразования ( %c ), соответствует символ ‘C’, а второму ( %s ), — строка «и к тому же очень сильно!».

Таблица 8.2. Спецификаторы преобразования для функции printf()
КодФормат
%aШестнадцатеричное в виде 0xh.hhhhp+d (только С99)
%AШестнадцатеричное в виде 0Xh.hhhhP+d (только С99)
%cСимвол
%dДесятичное целое со знаком
%iДесятичное целое со знаком
%eЭкспоненциальное представление (‘е’ на нижнем регистре)
%EЭкспоненциальное представление (‘Е’ на верхнем регистре)
%fДесятичное с плавающей точкой
%gВ зависимости от того, какой вывод будет короче, используется %е или %f
%GВ зависимости от того, какой вывод будет короче, используется %Е или %F
%oВосьмеричное без знака
%sСтрока символов
%uДесятичное целое без знака
%xШестнадцатеричное без знака (буквы на нижнем регистре)
%XШестнадцатеричное без знака (буквы на верхнем регистре)
%pВыводит указатель
%nАргумент, соответствующий этому спецификатору, должен быть указателем на целочисленную переменную. Спецификатор позволяет сохранить в этой переменной количество записанных символов (записанных до того места, в котором находится код %n )
%%Выводит знак %

Вывод символов


Вывод чисел

Спецификаторы преобразования %e и %E в функции printf() позволяют отображать аргумент типа double в экспоненциальном формате. В общем виде числа в таком формате выглядят следующим образом:

Применение спецификатора преобразования %g показано в следующей программе:

В результате выполнения получится следующее:

Вот что вывела эта программа:

Отображение адреса


Спецификатор преобразования %n


Модификаторы формата


Модификаторы минимальной ширины поля

Вот что выводится при выполнении этой программы:

Модификатор минимальной ширины поля чаще всего используется при создании таблиц, в которых столбцы должны быть выровнены по вертикали. Например, следующая программа выводит таблицу квадратов и кубов чисел от 1 до 19: А вот пример полученного с ее помошью вывода:

Модификаторы точности

Модификатор точности следует за модификатором минимальной ширины поля (если таковой имеется). Он состоит из точки и расположенного за ней целого числа. Значение этого модификатора зависит от типа данных, к которым его применяют.

Примененный к строкам, модификатор точности определяет максимальную длину поля. Например, %5.7s означает, что длина выводимой строки будет составлять минимум пять и максимум семь символов. Если строка окажется длиннее, чем максимальная длина поля, то конечные символы выводиться не будут.

Если модификатор точности применяется к целым типам, то он определяет минимальное количество цифр, которые будут выведены для каждого из чисел. Чтобы получилось требуемое количество цифр, добавляется некоторое количество ведущих нулей.

В следующей программе показано, как можно использовать модификатор точности:

Вот что выводится при выполнении этой программы:

Выравнивание вывода

В следующей программе показано, как применяется выравнивание по левому краю:

И вот что получилось:

Обработка данных других типов

На заметкуВ составе С99 имеются некоторые дополнительные модификаторы типа для функции printf() ; о них рассказывается в части II.

Модификатор * и #

В следующей программе показано применение обоих модификаторов # и * :

Рис. 8.1. Обратите внимание на то, каким образом звездочке (*) ставится в соответствие определенное значение

Источник

Урок 1. Часть 2: Инструкции языка Си printf, puts, putchar — вывод текста и других данных

Функция puts в Си

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

begin writeln(‘Hello world!’); end.

var slovo: string; begin slovo:=’Hello world!’; writeln(slovo); end.

#define SLOVO «Hello world!» main()

const SLOVO=’Hello world!’; begin writeln(SLOVO); end.

Функция putchar в Си

Функция putchar в Си необходима для вывода единичного символа на экран. Параметром функции могут быть данные следующих типов:

В некоторых компиляторах при использовании функции putchar в Си необходимо подключить в код файл заголовков STDIO.H с помощью директивы #include. В подобных компиляторах функция putchar() является производной другой функции — putc(), которая осуществляет вывод на специальные устройства, такие как диск или принтер.

Пример подключения файла заголовка:

Escape символы в Си или управление перемещением курсора

\n – переход на новую строку :

После слова Ура! произойдет переход на начало следующей строки.

Отображает строку с цифрой 0 в крайней левой позиции экрана и цифры от 1 до 5 через табуляцию

\r – возврат каретки к началу той же строки :

puts («1\r2»); // произойдет затирание

\b – сдвиг курсора на одну позицию влево

\’ — отображает одинарную кавычку

\» — отображает двойную кавычку

\\ — отображает обратную косую черту

Язык Си printf — функция вывода информации

Языки Си и Си++ имеют более сложную и комплексную функцию для вывода информации, называемую printf(). Она позволяет выводить на экран данные любого типа и работать с несколькими аргументами.

Кроме того, функция Си printf() позволяет осуществлять так называемый форматированный вывод данных.

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

#define NOTE «Привет!» main()

Но целесообразней использовать функцию для осуществления форматированного вывода:
Язык си форматированный вывод

Программа выведет на экран «Mne ispolnilos 12 let».

Указатели формата:
%d целое число
%u беззнаковое целое число
%f вещественное число типа float или double
%e вещественное число в экспоненциальной форме
%c символ
%s строка

Арифметические операции в Си, оператор присваивания

+ сложение
– вычитание
* умножение
/ деление
% получение остатка от деления нацело

Оператор присваивания
= простое присваивание a=b
++ унарный инкремент a++ (или ++a)
— унарный декремент
+= a+=b если a=3, b=4, то a=7
–= a-=b
*= a*=b
/= a/=b
%= a%=b если a=10, b=3 то а=1

сhar item[] = «Винчестер»; float cost = 3000.50; float markup = 0.75;

Добавьте в программу функцию printf(), которая выводит на экран следующие сообщения:

Наименование товара: Жесткий диск Цена за 1 упаковку: 3000.50 Наценка: 0.75

Обратите внимание на выравнивание.

Источник

Ввод-вывод в Си

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

Вывод информации

Функция printf() предназначена для форматированного вывода. Она переводит данные в символьное представление и выводит полученные изображения символов на экран. При этом у программиста имеется возможность форматировать данные, то есть влиять на их представление
на экране.

Общая форма записи функции printf() :

СтрокаФорматов состоит из следующих элементов:

Объекты могут отсутствовать.

Управляющие символы не выводятся на экран, а управляют расположением выводимых символов. Отличительной чертой управляющего символа является наличие обратного слэша ‘\’ перед ним.

Основные управляющие символы:

Форматы нужны для того, чтобы указывать вид, в котором информация будет выведена на экран. Отличительной чертой формата является наличие символа процент ‘%’ перед ним:

Результат работы программы
Язык си форматированный вывод

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

Табличный вывод

При указании формата можно явным образом указать общее количество знакомест и количество знакомест, занимаемых дробной частью:

В приведенном примере 10 — общее количество знакомест, отводимое под значение переменной; 5 — количество позиций после разделителя целой и дробной части (после десятичной точки). В указанном примере количество знакомест в выводимом числе меньше 10, поэтому свободные знакоместа слева от числа заполняются пробелами. Такой способ форматирования часто используется для построения таблиц.

Язык си форматированный вывод

Ввод информации

Функция форматированного ввода данных с клавиатуры scanf() выполняет чтение данных, вводимых с клавиатуры, преобразует их во внутренний формат и передает вызывающей функции. При этом программист задает правила интерпретации входных данных с помощью спецификаций форматной строки.
Общая форма записи функции scanf( ) :

Строка форматов и список аргументов для функции обязательны.

Результат работы программы:
Язык си форматированный вывод

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

Источник

Форматированный ввод и вывод

Форматированный вывод

Сегодня мы рассмотрим две важные функции форматированного ввода и вывода. Устройство и работу этих функций полностью можно понять только после изучения работы с указателями и функций с переменным числом параметров. Но пользоваться этими функциями необходимо уже сейчас, так что некоторые моменты придётся пропустить.

Функция проходит по строке и заменяет первое вхождение % на первый аргумент, второе вхождение % на второй аргумент и т.д. Далее мы будем просто рассматривать список флагов и примеры использования.

Общий синтаксис спецификатора формата
%[флаги][ширина][.точность][длина]спецификатор
Спецификатор – это самый важный компонент. Он определяет тип переменной и способ её вывода.

Таб. 1 Спецификатор типа.

СпецификаторЧто хотим вывестиПример
d или iЦелое со знаком в в десятичном виде392
uЦелое без знака в десятичном виде7235
oБеззнаковое в восьмеричном виде657
xБеззнаковое целое в шестнадцатеричном виде7fa
XБеззнаковое целое в шестнадцатеричном виде, верхний регистр7FA
f или FЧисло с плавающей точкой3.4563745
eЭкспоненциальная форма для числа с плавающей точкой3.1234e+3
EЭкспоненциальная форма для числа с плавающей точкой, верхний регистр3.1234E+3
gКратчайшее из представлений форматов f и e3.12
GКратчайшее из представлений форматов F и E3.12
aШестнадцатеричное представление числа с плавающей точкой-0xc.90fep-2
AШестнадцатеричное представление числа с плавающей точкой, верхний регистр-0xc.90FEP-2
cБукваa
sСтрока (нуль-терминированный массив букв)Hello World
pАдрес указателяb8000000
nНичего не печатает. Аргументом должен быть указатель на signed int. По этому адресу будет сохранено количество букв, которое было выведено до встречи %n
%Два идущих друг за другом процента выводят знак процента%

Суб-спецификатор длины изменяет длину типа. В случае, если длина не совпадает с типом, по возможности происходит преобразование до нужного типа.

Таб. 5 Длина.

спецификаторы
Длинаd, iu o x Xf F e E g G a Acspn
(none)intunsigned intdoubleintchar*void*int*
hhsigned charunsigned charsigned char*
hshort intunsigned short intshort int*
llong intunsigned long intwint_twchar_t*long int*
lllong long intunsigned long long intlong long int*
jintmax_tuintmax_tintmax_t*
zsize_tsize_tsize_t*
tptrdiff_tptrdiff_tptrdiff_t*
Llong double

Форматированный ввод

Как и в printf, ширина, заданная символом * ожидает аргумента, который будт задавать ширину. Флаг длина совпадает с таким флагом функции printf.

Кроме функций scanf и printf есть ещё ряд функций, которые позволяют получать вводимые данные

Это не полный набор различных функций символьного ввода и вывода. Таких функций море, но очень многие из них небезопасны, поэтому перед использованием внимательно читайте документацию.

Непечатные символы

В си определён ряд символов, которые не выводятся на печать, но позволяют производить форматирование вывода. Эти символы можно задавать в виде численных значений, либо в виде эскейп-последовательностей: символа, экранированного обратным слешем.

Источник

Форматированный вывод. Функция printf

Пожалуйста, приостановите работу AdBlock на этом сайте.

Общий синтаксис функции printf следующий:

Язык си форматированный вывод

Рис.1. Общий синтаксис функции printf.

Напоминаю, что параметрами называется то, что мы записываем рядом с именем функции в круглых скобках.

Кроме обязательной строки форматирования есть и необязательные параметры. Они пишутся через запятую после формат-строки.

Формат-строка.

Еscape-последовательности

Часто используемые escape-последовательности:

Как видите, последние четыре последовательности нужны лишь для того, чтобы вывести на экран символы «»», «’», «\» и «?». Дело в том, что если эти символы просто записать в формат-строку, то они не отобразятся на экране, а в некоторых случаях программа и вовсе не скомпилируется.

Следующая программа иллюстрирует работу escape-последовательностей.

Хотя escape-последовательности состоят из нескольких символов, но в потоке вывода они воспринимаются как цельный символ, который имеет своё собственное значение.

Итого, используя управляющие последовательности мы можем влиять на то, как данные будут выводиться на экране.

Спецификаторы формата.

Для каждого типа данных есть свой спецификатор формата. Ниже записаны основные из них.

Основные спецификаторы формата:

Есть и другие спецификаторы формата. Мы познакомимся с ними тогда, когда они нам понадобятся.

Сами спецификаторы формата на экран не выводятся. Вместо них выводятся данные, которые передаются в функцию printf после строки форматирования.

Функция printf работает следующим образом. Все символы, заключенные в двойные кавычки, кроме управляющих последовательностей и спецификаторов формата, выводятся на экран. Спецификаторы формата во время вывода заменяются на значения, указанные после формат-строки. Причем, если используется несколько спецификаторов формата, то первый спецификатор заменяется на первое значение, расположенное после формат строки, второй – на второе, и т.д.

Посмотрим на примерах.

Язык си форматированный вывод

Рис.2 Вывод Листинг 2.

Язык си форматированный вывод

Рис.3 Вывод Листинг 3.

Язык си форматированный вывод

Рис.4 Вывод Листинг 4.

Язык си форматированный вывод

Рис.5 Вывод Листинг 5.

Язык си форматированный вывод

Рис.6 Принцип работы функции printf.

По сути, формат строка задаёт некоторый трафарет(шаблон), в который подставляются данные для вывода, в том порядке, в котором они указаны.

Напишем небольшую программу, которая иллюстрирует использование спецификаторов формата.

Модификаторы формата.

Модификаторы формата записываются между символом % и буквой используемого типа. На рисунке ниже представлена спецификатор формата с использованием модификатора формата.

Язык си форматированный вывод

Рис.7 Модификатор формата

Первое число обозначает ширину поля, выделяемого для записи числа. Второе число обозначает точность, с которой мы хотим вывести данное вещественное число.

В примере на картинке под вещественное число мы выделяем 8 символов и хотим видеть 3 знака после запятой.

Если указанного в ширине количества позиций нам не хватает для вывода числа, то ширина поля увеличивается автоматически, до минимально-возможного количества позиций.

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

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

Язык си форматированный вывод

Рис.8 Вывод Листинг 8.

Я специально поставил вокруг каждого числа прямые черточки, что можно было увидеть, что означает ширина поля для вывода и как работает выравнивание по левому краю.

Да, чуть не забыл. Мы решили одну из задач, которая стояла перед нами в начале урока.

Практика

Решите предложенные задачи. Для удобства работы сразу переходите в полноэкранный режим Язык си форматированный вывод

Исследовательские задачи для хакеров:

Дополнительные материалы

Источник

Видео

Ввод и вывод данных. Спецификаторы формата. Курс по программированию на Си и Си++. Урок 5

Ввод и вывод данных. Спецификаторы формата. Курс по программированию на Си и Си++. Урок 5

C++. Форматированный ввод и вывод

C++. Форматированный ввод и вывод

ФОрматированный вывод в Си Д365 Rec 10 07 21

ФОрматированный вывод в Си Д365 Rec 10 07 21

Программирование на Си урок 30: Функции ввода и вывода строк в языке Си

Программирование на Си урок 30: Функции ввода и вывода строк в языке Си

C. Урок 7. Команды ввода и вывода

C. Урок 7. Команды ввода и вывода

C (Си): язык программирования Си, Форматирование вывода, управляющие символы, урок 4!

C (Си): язык программирования Си, Форматирование вывода, управляющие символы, урок 4!

BP1-1-6-6 Форматированный вывод

BP1-1-6-6 Форматированный вывод

Язык программирования Си. Урок 6. Ввод - вывод

Язык программирования Си. Урок 6. Ввод - вывод

C (Си): язык программирования Си, Форматирование вывода, спецификаторы вывода, урок 3!

C (Си): язык программирования Си, Форматирование вывода, спецификаторы вывода, урок 3!

Лекции Хусаинов НШ - Форматированный ввод/вывод

Лекции   Хусаинов НШ - Форматированный ввод/вывод
Поделиться или сохранить к себе:
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных, принимаю Политику конфиденциальности и условия Пользовательского соглашения.