nisfarm.ru

Printf C: popis, formátování, příklady

Standardní výstupní funkce konzoly v C je printf. Jeho popis je obsažen v hlavičkovém souboru stdio.h. Pomocí této funkce můžete do konzoly zadávat data nebo uživatelské zprávy. Jazyk C rozlišuje velká a malá písmena. Například dvě funkce printf a scanf se liší od Printf a Scanf jako je. Všechny znaky ve funkcích printf a scanf musí být také psány malými písmeny. Jeden z nejjednodušších příkladů C printf, který zobrazuje známý pozdrav ahoj svět, je:

printf c popis

Definování funkcí skupiny printf v souboru "stdio.h"

Soubor "stdio.h" odkazuje na standardní knihovnu vstupů a výstupů v jazyce C. Popis funkce printf a podobných funkcí je uveden takto:

printf c popis

Uvedené funkce provádějí načítání dat z určitých míst, převedou je na řetězec znaků a odešlou je na určené výstupní toky.

Funkce rodiny printf

Funkce skupiny printf v jazyce C slouží k zpracování a formátování výstupu dat do standardního proudu. Navíc printf vprintf a nahrávací funkce generovat standardní proud stdout fprintf vfprintf a funkce hodnot výstupních argumentů odeslaných na nějakém předem stanoveném výstupu, a snprintf, sprintf, vsnprintf vsprintf a zapisovat data v řetězci znaků. Všechny výše uvedené funkce fungují pomocí formátovacího řetězce, který udává potřebné konverze argumentů pro výstup.

printf c formátování

Funkce fprintf zapíše výsledek do výstupního proudu. Buffer, což je řetězec znaků, vytiskne výsledek funkce sprintf. Chování funkce je nedefinováno, pokud výstupní řetězec přesahuje velikost pole vyrovnávací paměti.

Funkce snprintf, podobně jako předchozí, zapisuje data do vyrovnávací paměti řetězců. Výsledný řetězec znaků končí znakem null, pokud bufsz (velikost vyrovnávací paměti) není nulová. V opačném případě, pokud je hodnota bufsz nula, do vyrovnávací paměti se nevydává nic a samotná vyrovnávací paměť může mít nulový ukazatel, ale návratová hodnota (počet bajtů, které měly být napsány) je stále hodnocen.

Funkce printf_s obecně působí stejným způsobem jako printf, vyjma jednoho okamžiku. Hlavní rozdíl v popisu printf_s v C a printf je následující: funkce printf_s kontroluje formátovací řetězec pro platné znaky, na rozdíl od printf, který kontroluje pouze formátovací řetězec pro prázdný ukazatel.

Podívejme se blíže na funkci printf.

Obecný popis

V C jsou znaky vytištěny pomocí standardního výstupního proudu voláním funkce printf. Příkaz printf ve formátu C formátuje výstupní datovou sadu a odesílá se do standardního výstupního streamu stdout. Hodnoty předávané jako argumenty funkce se vyvedou do konzoly podle zadaného formátovacího řetězce, který naopak obsahuje dva druhy prvků. Prvním typem jsou znaky zobrazené na obrazovce a prvky, které určují charakteristiky datového formátu a jsou zodpovědné za způsob reprezentace argumentů na výstupu, se vztahují k druhému druhu.

Při tisku proměnných z printf do C jsou speciální znakové kombinace v argumentovém řetězci nahrazeny daty převedenými podle těchto symbolů a pro každý datový typ existují vlastní specifikace výstupního formátu.

Typ funkce a návratová hodnota




Funkce printf typu int vrátí celočíselnou hodnotu udávající počet znaků vytištěných na obrazovce. Můžete například přiřadit:

int k = printf ("Dobrý den% c% d% s", "a", 11, "vše!")

a potom z hodnoty proměnné k, je snadné určit, zda na výstupu došlo k chybě. Je-li návratová hodnota záporná (pokud funkce vrátí hodnotu "-1"), můžete se domnívat, že při jeho spuštění došlo k chybě.

Syntaxe a závislosti

Chcete-li použít funkci printf, musíte připojit soubor záhlaví "stdio.h" následujícím způsobem:

#include

Šablona funkce vypadá takto:

int printf (const char * formát, ...)

Elipsa odkazuje na seznam argumentů, které mají být vygenerovány. Funkci printf lze použít s různým počtem argumentů, ale první je vždy na obou stranách ohraničena dvojitými uvozovkami a každá následující musí být oddělena od předchozí čárky. Co je napsáno v dvojitých uvozovkách a není specifikací formátu, je vytištěno bez změn, jinak se v případě, že se zjistí kvalifikátor, zkopíruje druh jeho hodnoty.

Formát specifikace formátu:

% [příznaky] [šířka] [pozice] [délka] typu

printf c výstupní proměnné

Formátování z výstupních hodnot printf na C

Čtení formátu čáry, která se zobrazuje v závorkách za názvem funkce volána, se vyskytuje pouze v jednom směru: zleva doprava, a první argument, byla stanovena po většinu tohoto řetězce se zobrazí pouze v případě, že specifikace je splněna jako první. Až do ukončení formátovacího řetězce zadané specifikace zahájí transformaci a tisk následujících argumentů. Mezera formát řetězec je považován za normální charakter a převede se do závěru, v případech, kdy není použit ve specifikaci výraz formátu.

Symbol "%" označuje začátek specifikace výstupního formátu, následovaný kódem formátu. Všechna pole ve specifikaci jsou oddělená a definují podmínky pro formátování čísel nebo symbolů.

Formátovaný výstup printf v C má své vlastní vlastnosti. V případě, že počet uvedených argumentů přesáhne počet specifikací formátu, jsou přeskočeny a nejsou vypsány. V opačném případě, pokud je specifikace formátu větší než hodnoty v seznamu argumentů, které mají být vytištěny, výsledek volání funkce není určen.

Chcete-li explicitně určit, že tvrzení řádek je nutné použít, možnost použití „% m $“ místo „%“ a „* m $“ místo „*“, a m, má číselnou hodnotu, celé číslo, které představuje požadovanou polohu argument (indexování začne s jedním) .

Parametry

proudVýstupní proud pro zápis do souboru
vyrovnávací paměťUkazuje na znakový řetězec pro následné psaní
bufszDefinuje počet znaků, povolené pro zápis: maximální hodnota je bufsz-1 a další null terminator
formátUkazatel pro vícebajtový řetězec s nulovým oddělovačem, který určuje, jak interpretovat výstupní argumenty
Vlajky použité ve formátu řetězec
VlajkaPopis
-Zarovnejte výsledek doleva ve výstupním poli
+Když je výstupní číselná hodnota se znaménkem, je hodnota "+" nucena být vytištěna před kladnou hodnotou (ve výchozím nastavení je před zápornou hodnotou zobrazena pouze ";"
0Pro celé čísla a čísla s pohyblivou čárkou se místo nulových znaků použijí nuly pro vyplnění levých číslic v případě, že je zadána šířka pole, která přesahuje délku čísla. U celých čísel je příznak ignorován, pokud je výslovně specifikována přesnost. U jiných transformací používajících tento příznak je chování funkce nedefinováno. Příznak "0" se nepřihlíží, jestliže je k dispozici příznak ";"
prostorPokud výstup výrazu, který má znak, nezačíná znakem tohoto znaku nebo je prázdný, přidá se k výsledku místo. Vlajka "space" se ignoruje, pokud je k dispozici příznak "+"
#Probíhá alternativní forma konverze
Řídicí sekvence
SekvenceVýsledek
aPípnutí
nPřeklad do nového řádku
rVrátit kurzor na začátek řádku
tTabulka
vVertikální tabulka
"Výstupy s dvojitými uvozovkami
Výstupní lomítko

Specifikátory různých formátů

Formátovací specifikátorPoužití a popis pro printf CTyp argumentu
%Psaní doslovného "%"
cVýstup jednoho znaku. Argument je převeden na nepodepsaný znak. Při použití modifikátoru "l" je argument převeden na řetězec znakůnepodepsaný znak
sVytiskněte řetězec znaků. Argument musí být ukazatelem počátečního prvku pole znaků charchar *
d
i
Výstup desetinné reprezentace celé hodnoty se znaménkemint
oVýstup osmičkové reprezentace bez signifikované celočíselné hodnotynepodepsaný int
x
X
Výstup hexadecimální reprezentace bez znaménko celočíselné hodnoty. Na konverzi "x" se používají znaky "a", "b", "c", "d", "e", "f". A pro transformaci "X" - "A", "B", "C", "D", "E", "F"nepodepsaný int
uVýstup desetinné konverzace bez signifikované celočíselné hodnoty. Pokud jsou převedená hodnota a přesnost obě, pak nejsou vyvedeny žádné symbolynepodepsaný int
f
F
Výstup desetinné reprezentace čísla s plovoucí desetinnou čárkoudvakrát
e
E
Výstup desítkové reprezentace exponenciální čísel s plovoucí desetinnou čárkou, a zaoblené transformovány tak, aby předtím, než čárka zůstane jedna číslice a počet číslic za desetinnou čárkou odpovídá přesnosti reprezentace (výchozí přesnost je 6, a pokud zadáte 0, čárka se nezobrazuje vůbec). Symbol "e" se zobrazí v horní nebo malé části v závislosti na konverzidvakrát
a
A
Hexadecimální reprezentace čísla s plovoucí desetinnou čárkoudvakrát
g
G
Výstup desítkové reprezentace čísla s plovoucí desetinnou čárkou nebo její desetinné exponenciální zobrazení v závislosti na hodnotě a přesnostidvakrát
nVrátí počet prvků vytištěných printf. Výsledek je zapsán do proměnné, na kterou odkazuje argument. Specifikace nesmí obsahovat příznaky, šířku pole nebo přesnostint *
strVýstup ukazateleprázdný *

printf c formátování

Modifikátor šířky pole

Ve formátu řetězec v printf C může být celé číslo zapsáno za znaménkem procenta a před příkazem pro formátování. Jedná se o modifikátor šířky pole a ovlivňuje prezentaci zobrazených dat. Nejmenší šířka pole pro hodnotu je určena tímto číslem a přítomnost takového modifikátoru, pokud je argument menší než pole, které je přiděleno, způsobí přidání mezery nebo nuly výsledku. Výchozí hodnota je mezera, ale můžete ji nastavit na nulu zadáním před specifikací šířky. Modifikátor určuje minimální šířku a každá hodnota, která přesahuje toto minimum, bude vytištěna bez rušení. Číslo, které sestává z méně než 8 znaků a je vytištěno se specifikací "% 08d", bude aktualizováno na požadované osm znaků pomocí nul.

Takové modifikátory mohou také specifikovat parametry pro přesnost nebo zarovnání.

Modifikátor přesnosti

Modifikátor přesnosti se používá k určení počtu desetinných míst vytištěných v číselném zobrazení. Přidání přesnost modifikátor nezbytné, aby bod po specifikace pole šířky a určit požadovanou hodnotu přesnosti po něm. Přesnost Modifikátor je určen k "e", "f", "a", "e", "A" a "F" formáty. Za celých modifikátor nastaví počet zobrazovaných číslic přidáním nuly na levé číslice, pokud je to nutné, a odvození racionálních čísel určuje požadovaný počet desetinných míst. Pokud jde o řetězcové proměnné: následující číslo po bodě v modifikátoru přesnosti slouží jako determinant maximální délky pole na výstupu. Například pro zobrazí daný „% 4.8s“ formát specifikace řetězce, jejichž délka se pohybuje v rozmezí od čtyř do osmi znaky v krajním případě překročení znaků bude vynechán.

Další modifikátory formátu

Zarovnání je ve výchozím nastavení správně odůvodněno, ale toto může být změněno vložením ";" za "%". Tato specifikace formátu nastavuje zarovnání doleva.

Funkce printf je navíc schopna rozlišit mezi krátkými a dlouhými typy výstupních celočíselných hodnot. Platné kvalifikátory jsou "o", "d", "u", "i", "x" a "X". Dlouhý typ hodnoty je nastaven modifikátorem "l" a krátkým typem modifikátorem "h". Například při výstupu dlouhého čísla a hodnoty typu krátké nepodepsané int, specifikace formátu vypadají jako "% ld" a "% hu".

DélkaPopis
hU krátkých nebo nepodepsaných krátkých typů
lU dlouhých nebo nepodepsaných dlouhých typů
LPro dlouhý dvojitý typ

Příklady

1. Popis printf C a výsledky volání každé funkce:

formátovaný výstup printf c

2. Zobrazení jednoduché dialogové zprávy:

printf ("zpráva");

3. Programový kód:

příklady printf c

Výrazy specifikované v dvojitých uvozovkách před specifikací formátu jsou vytištěny na obrazovce, stejně jako argumenty podle formátovacího řetězce. Výsledek výše uvedených funkcí printf C, popis výstupu:

printf c příklady

Tento příklad znázorňuje výstup na obrazovce pomocí různých formátů řetězců, celočíselných proměnných, symbolů a čísel s pohyblivou čárkou.

Standardní vstupní funkce scanf a příklady jejího použití

scanf c formát

Funkce scanf se používá k čtení dat zadaných z klávesnice. Popis souboru printf a scanf v C je uveden v hlavičkovém souboru "stdio.h".

scanf ("specifikátory formátu", hodnota1, hodnota2, ...);

c printf formátu

Jednoduchý příklad práce s funkcí scanf:

#include

int hlavní () {

int a;

float b;

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

}}

Sdílet na sociálních sítích:

Podobné
© 2021 nisfarm.ru