Printf C: описание, форматиране, примери
Стандартната функция за изходна конзола в C е printf. Описанието му се съдържа в заглавния файл stdio.h. С тази функция можете да извеждате данни или потребителски съобщения в конзолата. На езика С се прави разлика между главни и малки букви. Например, двете функции printf и scanf се различават от Printf и Scanf като тях. Всички знаци в функциите printf и scanf също трябва да бъдат написани с малки букви. Един от най-простите примери на C printf, който показва познатата поздрава за здравей свят, е:
съдържание
- Определяне на функциите на групата printf във файла "stdio.h"
- Функцията familyf printf
- Общо описание
- Тип на функцията и стойност на връщането
- Синтаксис и зависимости
- Форматиране от printf до c изходни стойности
- параметри
- Различни спецификатори на формата
- Модификатор на ширината на полето
- Модификатор за точност
- Други модификатори на формати
- примери
- Стандартна функция за въвеждане на сканиране и примери за нейното използване
Определяне на функциите на групата printf във файла "stdio.h"
Файлът "stdio.h" се отнася до стандартната I / O библиотека на езика C. Описанието на printf и подобни функции е дадено в него, както следва:
Изброените функции изпълняват зареждането на данни от определени местоположения, конвертират ги в низ от знаци и ги изпращат на посочените изходящи потоци.
Функцията familyf printf
Функциите на printf group на езика C служат за обработка и форматиране на изходните данни към стандартен поток. Освен ФОРМАТ vprintf и запис функции генерират стандартната стандартния изход поток, fprintf vfprintf и функция стойности изходни аргументи се изпращат в някакъв предварително определен изход, както и snprintf, sprintf, vsnprintf vsprintf и запис на данни в символния низ. Всички горепосочени функции работят с помощта на форматен низ, който показва необходимите аргументи за реализации за изхода.
Функцията 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 има свои собствени характеристики. В случай че броят на изброените аргументи надхвърли броя на спецификациите на формата, те се пропускат и не се извеждат. В противен случай, ако спецификацията на формата е по-голяма от стойностите в списъка с аргументи, които ще бъдат отпечатани, резултатът от функцията за повикване не е определен.
Изрично да се уточни, че аргумент ред е необходимо да се използва, възможност за използване на "% т $" вместо "%" и "* м $" вместо "*", и т, десетична стойност цяло число, което представлява желания аргумент положение (индексиране започва с един) ,
параметри
поток | Изходен поток за записване в файл |
буфер | Появява се на символен низ за последващо писане на него |
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 * |
р | Изход на показалеца | празно * |
Модификатор на ширината на полето
формат ФОРМАТ линия 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 и резултатите от обаждането на всяка функция:
2. Показване на проста диалогова съобщение:
printf ("съобщение");
3. Кодът на програмата:
Изразите, уточнени в двойни кавички преди форматните спецификации, се отпечатват на екрана, както и аргументите, следващи формата на низа. Резултатът от горните функции printf C, описание на изхода:
Този пример илюстрира изхода на екрана, използвайки различни струнни формати, цели числа, символи и числа с плаваща запетая.
Стандартна функция за въвеждане на сканиране и примери за нейното използване
Функцията scanf се използва за четене на данни, въведени от клавиатурата. Описанието на printf и scanf в C е представено в заглавния файл "stdio.h".
scanf ("спецификатори на формат", стойност1, стойност2, ...);
Един прост пример за работа с функцията scanf:
#include
int main () {
int a;
float b;
scanf ("% d% f", а, b);
}
- Как да решим проблема в Excel "Първото писмо на заглавието"
- Обратният полски запис: алгоритъм, методи и примери
- SQL файл. SQL файлов формат: описание на разширението
- Послания на Делфи в Паскал
- Как да промените езика в "Skyrim": подготовка за използване на конзолата
- Информативно е ... Какво е скрито зад думата
- Символи в PHP: низ на номер и обратно
- Използване на функцията за експлозия на PHP
- Четене на файл с файла получите съдържание функция PHP
- jаvascript: работа с низове, функции
- Функции на езика. Какво означава това?
- Основни функции на езика
- Потребителски файл crontab: примери, описание и отзиви
- Функции в Python: def. Python 3 за начинаещи
- Работа с файлови обекти: отворете, прочетете и пишете на файлове в Python
- Функцията strpos в PHP: определяне на позицията на подначертанието
- Форматиране на номера: PHP функция number_format ()
- Проверката за наличието на PHP file_exists
- Списък на всички Включете C обяснения на C
- Функция Scanf C: описание
- За начинаещи PHP програмисти: дължината на низа