Printf C: описание, форматиране, примери

Стандартна функция на изхода на конзолата в C - printf. Описанието му се съдържа в заглавния файл stdio.h. С тази функция можете да извеждате данни или персонализирани съобщения в конзолата. C е чувствителен към малки и големи букви. Например две функции printf и scanf са различни от тези на Printf и Scanf. Всички символи в функциите printf и scanf също трябва да бъдат написани с малки букви. Един от най-простите примери на C printf, който показва поздравите на приветливия свят, е:


Определете функционалната група printf във файла "stdio.h"

Файлът "stdio.h" принадлежи към стандартната I /O библиотека в C. Описанието на printf и неговите подобни функции е дадено в него както следва:
Изброените функции генерират зареждане на данни от определени местоположения, конвертират ги в символен низ, изпращат в определени изходни потоци.

функциите на семейството printf

на printf групата в C се използват за обработка и форматиране на изходните данни в стандартната нишка. Освен това, функциите printf и vprintf създават запис в стандартния stdout на потока, функциите fprintf и vfprintf изпращат стойността на аргументите се показват в даден изходен поток, а snprintf, sprintf, vsnprintf и vsprintf записват данни в символния низ. Всички тези функции работят с помощта на форматен низ, указващ необходимото преобразуване на аргументите за изход.
Функцията fprintf записва резултата в изходния поток на потока. В буфера, който представлява символен низ, се извежда резултатът от функцията sprintf. Поведението на функцията не е дефинираноако линията, която трябва да се изведе, надвишава размера на буферния масив.


Функцията snprintf, подобно на предишната, записва данни в буферен низ. Получената поредица от символи завършва с нулев характер, освен ако bufsz (буферният размер) не е нула. В противен случай, ако стойността на bufsz е нула, нищо не се показва в буфера, а самият буфер може да е нулев показател, но изчислената стойност (броят на байтовете, които би трябвало да бъдат записани) все още се изчислява. Функцията printf_s обикновено работи по същия начин като printf, с изключение на един момент. Основната разлика в описанието на printf_s в C и printf е следната: функцията printf_s проверява форматния низ за наличие на валидни знаци, за разлика от printf, който проверява само формата за низ от празен указател. Нека погледнем отблизо функцията printf.

Общо описание

На езика С символите се отпечатват чрез стандартния изходен поток чрез извикване на функцията printf. Командата printf в C форматира набор от изходни данни и те се изпращат към стандартния изходен поток (stdout.) Стойностите, предавани като функционални аргументи, се извеждат към конзолата според зададената линия за форматиране, която от своя страна съдържа два вида елементи. символите, които се показват на екрана, и елементите, които дефинират особеностите на формата на данните и са отговорни за метода на представяне на аргументите в деривацията, се отнасят до втория тип. Ments се заменят с конвертирани всъгласно тези символни данни, и за всеки тип данни има спецификация на изходния формат.

Тип на функцията и връщана стойност

Функцията printf, която има тип int, връща цяло число, което представлява броя на знаците, отпечатани на екрана. Например, можете да зададете: int k = printf ("Здравейте"% c% d% s, "a", 11 "за всички!"), И след това от стойността на k, е лесно да се определи, има грешка в изхода.

Синтаксис и зависимост

За да използвате функцията printf, трябва да свържете заглавния файл stdio.h както следва: #include Шаблонът на функцията изглежда така: int printf (const char * format,) Три точки се отнасят към списъка с аргументи, които трябва да бъдат изведени. Тя трябва да се използва с различен брой аргументи, но първата винаги е ограничена до двете страни с двойни лапи, а всеки следващ трябва да бъде отделен от предходната запетая.Фактът, че е написан в двойни кавички и не е спецификация на формата, се отпечатва без промени, ако спецификаторът е изпълнил, типът на неговата стойност се копира. Формат на задачата за задаване на формуляр:% [flags] [width] [.position] [length] type

Форматиране на printf в изход C

Четенето на форматен низ, който е посочен в скоби след извикването на името на функция, възниква само от едната страна наляво надясно, а първият аргумент, посочен след самия ред, се показва само в случайотговаря на първата спецификация. Докато низът на формата не е завършен, посочените спецификации в него ще инициират преобразуването и отпечатването на следните аргументи. В лентата за форматиране символът за интервал се счита за нормален характер и се предава на заключението в случаите, когато не се използва в изразяването на спецификацията на формата.
Символът "%" указва началото на спецификацията на спецификацията на изхода, последван от кода на формата. Всички полета в спецификацията са отделни, определят се условията за форматиране на числа или символи. Форматираният изход на printf в C има свои особености. В случай, че броят на изброените аргументи надвишава броя на спецификациите на формата, те се пропускат и не се показват. В противен случай, ако спецификациите на формата са по-големи от стойностите на списъка, който ще бъде отпечатан, резултатът от повикването не се определя. За изрично указание кой аргумент на акаунта трябва да се използва, е възможно да се използва "% m $" вместо "%" и "* m $" вместо "*", а m, целочисленото десетично число, означава позицията на желания аргумент (индексирането започва с единица) ,

Параметри



поток



изходен поток за записване във файл



буфер

)

Указател към символния низ за по-нататъшно записване в него



bufsz



Определя броя на знаците, които могат да се напишат: максимумът стойността е bufsz-1 и все още нулево ограничение



формат



Указател към многобайтови низ с нулево ограничение, който определя как да се интерпретират аргументите 55)
Знамена,

Флаг



Описание



-



Резултатът се подравнява с левия край на изходното поле



+



Когато се изчисли числовата стойност, тя има знак + +, принуден преди положителната стойност



0



За числата и числата с плаваща запетая водещите нули се използват вместо "-" преди отрицателната стойност. пробел за запълване на лявата цифра в случай, че ширината на полето е превишена дължина на номера За цели числа, флагът се игнорира, ако точността е точно определена. За други реализации, използващи това знаме, поведението на функцията не е дефинирано. Флагът "0" не се взима под внимание, ако има флаг "-"







. Ако резултатът от извличане на знак, който има знак, не започва с символа на този знак или празен, тогава пространството се добавя към резултата. Интервалът "flag" се игнорира, ако има знак "+"



#



Извършва се алтернативна форма на преобразуване

105)
Последователността



Резултатът



а



Звуков сигнал
120)

n



Превод в нов ред



r



Връщане на курсора в началото на реда



t



Табулации



v



Вертикална таблица



"



Заключение двойни лапи

61)




Заключителни наклонени черти

РазличниФормат на спецификацията



Формат на спецификацията



Използва се и разпечатка C



Тип аргумент



%



Писане на литерали "%"







196)


Заключение на един символ. Има аргумент за преобразуване на знак без знак. При използване на модификатора "l", аргументът се преобразува в низ от символи



неподписани символи



s



Печат на символни низове. Аргументът трябва да е указател към началния елемент на символния масив char



char *



d
i



Заключението на десетичното представяне на целочислена стойност със знак



int



o



Октагонално заключение представяне без целочислена стойност



без знака int



x
X



Заключение шестнадесетично представяне без знак целочислена стойност. Символите "а", "б", "в", "г", "д", "е" се използват за преобразуване на "х". А за трансформацията "X" - "A", "B", "C", "D", "E", "F"



без знака int



u



Заключението на десетичното преобразуване без подписана цяло число. Ако конвертираната стойност и точност заедно са 0, тогава символите не се показват



без знака int



f
F

273)
Заключението на десетично представяне на число с плаваща запетая с знак



double



e
E
285)

Заключението на десетичното експоненциално представяне на плаваща запетая, закръглено и преобразувано, така чеЕдна цифра остава пред запетая, а броят на цифрите след запетая съответства на точността на представянето (по подразбиране точността е 6, а ако е посочена 0, символът изобщо не се показва). Символът "е" се показва в горния или долния регистър в зависимост от преобразуването



двойно



a
A

299)
Заключението на шестнадесетично представяне на число с плаваща запетая


двойно



g
G


)
Заключението на десетично представяне на число с плаваща запетая или неговото десетично експоненциално представяне в зависимост от стойността и точността



double



n
)


Връща броя на елементите, отпечатани от функцията printf. Резултатът се записва в променливата, зададена от аргумента. Спецификацията не може да съдържа знамена, ширини на полета или точност



int *



p



Заключение указател



невалидни *

Модификатор за ширина на полето

В печатната форма на printf C може да бъде записано цяло число след знака за процента и преди командата за форматиране. Това е модификатор за ширина на полето и засяга представянето на показаните данни. Най-малката ширина на полето за дадена стойност се определя от този номер и наличието на такъв модификатор в случай, че аргументът се окаже по-малък от разпределеното за него поле, причинява добавянето на пропуски или нули към резултата. По подразбиране пълнителят е пробел, но можете да зададете нула, като го регистрирате преди спецификацията за ширина. Модификаторът определя минимуми повече от тази минимална стойност ще бъдат отпечатани без смущения. Числото, например, състоящо се от по-малко от осем знака и въведено със спецификацията "% 08d", ще бъде допълнено от нули до необходимите осем знака. Подобни модификатори могат също да задават параметри за точност или подравняване.

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

Модификаторът на точност служи за определяне на броя на отпечатаните знаци в представянето на числата. За да добавите прецизен модификатор, трябва да поставите точка след спецификацията на полето за ширина и да посочите правилната точност след нея. Модификаторът на точност се определя за форматите "е", "е", "а", "е", "а" и "е". За цели числа, модификаторът задава броя на показаните цифри, добавяйки нули към лявата ръка, ако е необходимо, и при извеждане на рационални числа определя необходимия брой десетични знаци. За термина променливи: следващият след номера на точката в модификатора на точност служи като средство за определяне на максималната дължина на полето, когато се извежда. Например, със спецификация на формата "% 4.8 s", ще се покаже низ, чиято дължина е в диапазона от четири до осем символа, в случай на излишък, екстремните символи ще бъдат пропуснати.

Други модификатори на формат

Подреждането по подразбиране е подравняване на десния край, но може да бъде променено чрез поставяне на знака "-" след "%". Тази спецификация на формата задава подравняването на левия край. Освен това функцията printf може да различава къси и дълги типове цели числа. Допустими спецификатори: "pro","d", "u", "i", "x" и "x". Дълъг тип стойност се задава от модификатора "l", а краткият е модификатор "h". Например, когато се извежда дълго цяло число, а стойността на неподписания кратък формат за спецификация тип int изглежда съответно "% ld" и "% hu".

Дължина



Описание



h



За типове кратки или неподписани





При дълги двойни

Примери

1. Описание на printf C и резултатите от извикването на всяка функция:
2. Заключение на екрана на просто диалогово съобщение: printf ("съобщение"); 3. Код на програмата:
Изрази, дадени в двойни кавички, преди спецификациите на формата да бъдат отпечатани на екрана, както и аргументи след низа за форматиране. Резултатът от горните функции на printf C, описание на изхода:
Този пример илюстрира изхода на екрана, използвайки различни линейни формати, целочислени променливи, символи и числа с плаваща запетая.

Стандартна входна функция на scanf и примери за нейното използване

Функцията scanf, използвана за четене, се въвежда от клавиатурата за данни. Описанието на printf и scanf в C е представено в заглавния файл "stdio.h". scanf ("спецификатори на формат", & amp; value1 & amp; value2);
Един прост пример за работа с функцията scanf: #include int main () {int a; плувка б; scanf ("% d% f" & amp; b & b); }

Свързани публикации