Как вывести string через printf

Функция printf

Если вы пишете на C++, то лучше подключать файл cstdio :

Символ ‘\n’ в конце вывода означает символ перехода на новую строку.

Например, чтобы напечатать значения переменных a и b типа int через пробел можно использовать следующую функцию:

Выводимые типы

Перечислим разные типы данных, которые можно выводить при помощи функции printf и соответствующие им форматные строки.

Значения целых чисел также можно выводить в восьмеричной или шестнадцатеричной системах счисления.

Обратите внимание, переменную типа float вывести при помощи функции printf нельзя (можно привести значение типа float к типу double и вывести его).

В операционной системе Windows не рекомендуется использовать тип long double.

Модификаторы длины

Используется для значения типа long int или unsigned long int вместе с модификаторами d, i, u.

Используется для значения типа double вместе с модификаторами e, f, g.

hhИспользуется для значения типа char вместе с символами d, i, u для вывода в виде десятичного числа, соотвветствующего его ASCII-коду.
hИспользуется для значения типа short int или unsigned short int вместе с модификаторами d, i, u.
l
llИспользуется для значения типа long long int или unsigned long long int вместе с модификаторами d, i, u.
LИспользуется для значения типа long double вместе с модификаторами e, f, g. Не следует использовать в Windows.

Ширина поля вывода

После знака % можно задать ширину поля для вывода в виде целого числа (не начинающегося с нуля). В этом случае число вывод этого числа будет занимать указанное число символов. Если в числе меньше цифр, чем заданная ширина поля вывода, то перед числом (слева) выводятся пробелы. Если же в числе больше цифр, чем ширина поля, то выводятся все цифры (то есть выводится больше цифр, чем вся ширина поля, поле расширяется, чтобы вывести все символы).

Если перед шириной поля поставить цифру 0, например, «%010d», то число будет дополняться слева не пробелами, а нулями. Это удобно, например, для вывода времени в формате hh:mm, что можно сделать, например, так:

Также вместо ширины поля вывода можно указать символ «*» (звездочка), тогда значение ширины поля вывода нужно передать в качестве дополнительного параметра. Например, запись:

означает вывести значение переменной a используя поле шириной n символов.

Точность вывода действительных чисел

По умолчанию действительные числа выводятся с 6 знаками после точки, при этом числа в экспоненциальной форме выводятся в виде одной цифры, точки и 6 цифр после точки (и показателя степени).

Вывод целых чисел со знаком +/-

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

Большинство перечисленных выше параметров комбинируются друг с другом. Например, такая строка:

означает вывод числа типа long long, со знаком «+» или «-» перед числом, с добавлением нулей таким образом, что общее число выводимых символов будет не меньше 20.

Источник

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 Спецификатор типа.

СпецификаторЧто хотим вывестиПример
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 есть ещё ряд функций, которые позволяют получать вводимые данные

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

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

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

Источник

Синтаксис

Параметры

format
Формат объекта.

argument
Необязательные аргументы.

locale
Используемый языковой стандарт.

Возвращаемое значение

Комментарии

Функция wprintf — это версия printf с расширенными символами; format — строка расширенных символов. wprintf и printf ведут себя одинаково, если поток открыт в режиме ANSI. Функция printf на данный момент не поддерживает вывод данных в поток в кодировке Юникод.

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

Аргумент format состоит из обычных символов, escape-последовательностей и (если за format следуют аргументы) спецификаций формата. Обычные символы и escape-последовательности копируются в stdout в порядке их отображения. Например, в строке

выводятся следующие выходные данные:

Спецификации формата всегда начинаются со знака процента ( ) и читаются слева направо. Когда функция printf обнаруживает первую спецификацию формата (если таковые имеются), она преобразует значение первого после format аргумента и выводит его соответствующим образом. Вторая спецификация формата вызывает преобразование второго аргумента и его вывод и т. д. Если число аргументов превышает количество спецификаций формата, лишние аргументы игнорируются. Если число аргументов меньше количества спецификаций формата, результаты будут не определены.

Убедитесь, что format не является строкой, определяемой пользователем.

Универсальное текстовое сопоставление функций

Tchar.h ассемблер_UNICODE и _MBCS не определено_MBCS определяется_UNICODE определяется
_tprintf printf printf wprintf
_tprintf_l _printf_l _printf_l _wprintf_l

Требования

Источник

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

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

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

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

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

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

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

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

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

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

Результат работы программы
Как вывести string через printf. Смотреть фото Как вывести string через printf. Смотреть картинку Как вывести string через printf. Картинка про Как вывести string через printf. Фото Как вывести string через printf

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

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

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

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

Как вывести string через printf. Смотреть фото Как вывести string через printf. Смотреть картинку Как вывести string через printf. Картинка про Как вывести string через printf. Фото Как вывести string через printf

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

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

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

Результат работы программы:
Как вывести string через printf. Смотреть фото Как вывести string через printf. Смотреть картинку Как вывести string через printf. Картинка про Как вывести string через printf. Фото Как вывести string через printf

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

Комментариев к записи: 96

#include
#include
#include
#include

int main() <
int a[4][5];
int i,j,range,max,maxi,maxj;
float kproiz1,kproiz2;
int proiz1=1;
int proiz2=1;

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *