muzruno.com

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

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

printf c описание

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

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

printf c описание

Изброените функции изпълняват зареждането на данни от определени местоположения, конвертират ги в низ от знаци и ги изпращат на посочените изходящи потоци.

Функцията familyf printf

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

printf c форматиране

Функцията fprintf записва резултата в изходния поток. Буферът, който е символен низ, отпечатва резултата от функцията sprintf. Поведението на функцията не е дефинирано, ако низът, който ще бъде изнесен, надвишава размера на буферния масив.

Функцията snprintf, подобно на предишната, записва данни в низ буфер. Полученият низ на знаците завършва с нулев знак, освен ако bufsz (размер на буфера) е нула. В противен случай, ако стойността bufsz е нула, нищо не се извежда в буфера, а самият буфер може да е нулев показалец, но стойността на връщане (броят на байтовете, които трябваше да бъдат написани) все още се оценява.

Функцията printf_s обикновено действа по същия начин като printf, с изключение на един момент. Основната разлика в описанието на printf_s в C и printf е следната: функцията printf_s проверява структурния низ за валидни знаци, за разлика от printf, който проверява само формата на низ за празен показалец.

Да разгледаме по-отблизо функцията printf.

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

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

При отпечатване на променливи от printf до C, специални комбинации от символи в аргумента низ са заменени с данни, преобразувани в съответствие с тези символи, и за всеки тип данни има свои спецификации продуктов формат.

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

Функцията printf на тип int връща стойност за цяло число, показваща броя на отпечатаните на екрана символи. Например, можете да зададете:

int k = printf ("Здравейте% c% d% s", "a", 11, "всички!")

и след това от стойността на променливата k, лесно е да се определи дали е възникнала грешка в изхода. Ако връщащата стойност е отрицателна (ако функцията връща "-1"), можете да заключите, че възникна грешка при нейното изпълнение.

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

За да използвате функцията printf, трябва да монтирате заглавния файл "stdio.h" както следва:

#include

Шаблонът за функции изглежда така:

int printf (const char * формат, ...)

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

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

% [флагове] [ширина] [позиция] [дължина] тип

printf c изходни променливи

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

Четенето на низ от формат, посочено в скоби след името на извиканата функция, се извършва само по един начин: отляво надясно и първият аргумент, зададен след самата линия, се показва само ако се срещне първата спецификация. Докато низът за формат приключи, зададените в него спецификации ще инициират трансформацията и отпечатването на следващите аргументи. Във формат низ пространственият символ се третира като обикновен знак и се предава на изхода в случаите, когато не се използва в израза на спецификацията на формата.

Символът "%" показва началото на спецификацията на изходния формат, последван от кода на формата. Всички полета в спецификацията са отделни, определяйки условията за форматиране на числа или символи.

Форматираният изход на printf в C има свои собствени характеристики. В случай че броят на изброените аргументи надхвърли броя на спецификациите на формата, те се пропускат и не се извеждат. В противен случай, ако спецификацията на формата е по-голяма от стойностите в списъка с аргументи, които ще бъдат отпечатани, резултатът от функцията за повикване не е определен.



Изрично да се уточни, че аргумент ред е необходимо да се използва, възможност за използване на "% т $" вместо "%" и "* м $" вместо "*", и т, десетична стойност цяло число, което представлява желания аргумент положение (индексиране започва с един) ,

параметри

потокИзходен поток за записване в файл
буферПоявява се на символен низ за последващо писане на него
bufszопределя брой знаци, допустимо за писане: максималната стойност е bufsz-1 и друг нулев терминатор
форматПоказалец към многобайтов низ с нулев разделител, който определя как да се интерпретират изходните аргументи
Флагове, използвани във формат низ
флагописание
-Изравнете резултата наляво в изходното поле
+Когато произтичащи цифровата стойност като знак принудително отпечатан "+", за да положителна стойност (само подразбиране изход ";" преди отрицателна стойност)
0За числа с цели числа и числа с плаваща запетая вместо символи с космически знаци се използват нули, за да се попълнят левите цифри в случай, че е зададена широчина на полето, която надвишава дължината на номера. За числа, знакът се игнорира, ако точността е изрично посочена. За други трансформации, използващи този флаг, поведението на функцията не е дефинирано. Знакът "0" не се разглежда, ако има флаг ";"
пространствоАко изходът на израз, който има знак, не започва със знака на този знак или е празен, към резултата се добавя интервал. Знакът "space" се игнорира, ако има флаг "+"
#Извършва се алтернативна форма на преобразуване
Контролни секвенции
последователнострезултат
aзвуков сигнал
nПревод на нов ред
rВръщане на курсора до началото на реда
tетикет
vВертикално табулиране
"Изход за двойни котировки
Изходна наклонена черта

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

Форматиране на спецификатораИзползване и описание за printf CТип на аргумента
%Писане на буквално "%"
вИзвежда един знак. Аргументът се преобразува в неподписан знак. Когато използвате модификатора "l", аргументът се преобразува в низ от знацинеподписан знак
итеОтпечатва низ на знаци. Аргументът трябва да е показалец към началния елемент на масива от символи на символаchar *
г
аз
Резултат на десетично представяне на целочислена стойност със знакинт
оИзход на октаново представяне без подписано цяло числонеподписан инт
х
X
Извежда шестнадесетично представяне без подписано цяло число. За преобразуване на "x" се използват знаците "a", "b", "c", "d", "e", "f". И за трансформацията "Х" - "А", "Б", "С", "Д", "Е", "неподписан инт
фИзвежда десетично преобразуване без подписано цяло число. Ако преобразуваната стойност и точността са и двете, тогава не се извеждат символинеподписан инт
е
F
Изход на десетично представяне на номера с плаваща запетая със знакдвойно
д
E
Изход от десетична представителство на експоненциални числа с плаваща запетая, и закръглена трансформира, така че преди запетаята остава една цифра, а броят на цифрите след десетичната запетая съответства на точността на представяне (точността по подразбиране е 6, а ако посочите 0, запетаята не се показва изобщо). Символът "e" се показва в горната или долната част в зависимост от преобразуванетодвойно
а
А
Шестнадесетично представяне на номера с плаваща запетаядвойно
г
G
Изход на десетично представяне на номера с плаваща запетая или десетично експоненциално представяне в зависимост от стойността и точносттадвойно
пВръща броя на елементите, отпечатани от printf. Резултатът се записва в променливата, посочена от аргумента. Спецификацията може да не съдържа флагове, ширини на полето или точностint *
рИзход на показалецапразно *

printf c форматиране

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

формат ФОРМАТ линия C може да бъде написано число след знака на сто, и преди командата форматиране. Това е модификатор на ширината на полето и влияе върху представянето на показаните данни. Най-малката ширина на полето, предназначено за стойности, определени в този брой, както и наличието на този модификатор, ако аргументът е по-малко от отпуснатите й полета причиняват на резултата от добавяне на интервали или нули. По подразбиране е космическият знак, но можете да го зададете на нула, като го посочите преди спецификацията за ширината. Модификатор определя минимална ширина, и всеки излишък от тази минимална стойност ще бъдат отпечатани без смущения. Брой, например, се състои от най-малко осем букви и печат спецификация "% 08D", ще бъде допълнен с желаните осем цифри с нули.

Такива модификатори могат също така да определят параметри за точност или подравняване.

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

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

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

Изравняването по подразбиране е правилно оправдано, но това може да бъде променено чрез поставяне на ";" след "%". Тази спецификация на формата задава подравняването вляво.

В допълнение, функцията printf е в състояние да прави разграничение между кратки и дълги типове стойности за число на изход. Валидни квалификации са "o", "d", "u", "i", "x" и "X". Дългият тип на стойността се определя от модификатора "l", а късият от модификатора "h". Например, при извеждането на дълго цяло число и стойност на типа кратък неподписан int, спецификациите на формата изглеждат съответно "% ld" и "% hu".

дължинаописание
зЗа кратки или неподписани къси типове
лЗа дълги или неподписани дълги типове
LЗа дълъг двоен тип

примери

1. Описание printf C и резултатите от обаждането на всяка функция:

форматиран изход printf c

2. Показване на проста диалогова съобщение:

printf ("съобщение");

3. Кодът на програмата:

примери printf c

Изразите, уточнени в двойни кавички преди форматните спецификации, се отпечатват на екрана, както и аргументите, следващи формата на низа. Резултатът от горните функции printf C, описание на изхода:

printf c примери

Този пример илюстрира изхода на екрана, използвайки различни струнни формати, цели числа, символи и числа с плаваща запетая.

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

scanf c формат

Функцията scanf се използва за четене на данни, въведени от клавиатурата. Описанието на printf и scanf в C е представено в заглавния файл "stdio.h".

scanf ("спецификатори на формат", стойност1, стойност2, ...);

c printf формат

Един прост пример за работа с функцията scanf:

#include

int main () {

int a;

float b;

scanf ("% d% f", а, b);

}

Споделяне в социалните мрежи:

сроден