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:
Obsah
- Definování funkcí skupiny printf v souboru "stdio.h"
- Funkce rodiny printf
- Obecný popis
- Typ funkce a návratová hodnota
- Syntaxe a závislosti
- Formátování z výstupních hodnot printf na c
- Parametry
- Specifikátory různých formátů
- Modifikátor šířky pole
- Modifikátor přesnosti
- Další modifikátory formátu
- Příklady
- Standardní vstupní funkce scanf a příklady jejího použití
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:
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.
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
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
proud | Výstupní proud pro zápis do souboru |
vyrovnávací paměť | Ukazuje na znakový řetězec pro následné psaní |
bufsz | Definuje počet znaků, povolené pro zápis: maximální hodnota je bufsz-1 a další null terminator |
formát | Ukazatel pro vícebajtový řetězec s nulovým oddělovačem, který určuje, jak interpretovat výstupní argumenty |
Vlajka | Popis |
- | 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 ";" |
0 | Pro 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 ";" |
prostor | Pokud 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 |
Sekvence | Výsledek |
a | Pípnutí |
n | Překlad do nového řádku |
r | Vrátit kurzor na začátek řádku |
t | Tabulka |
v | Vertikální tabulka |
" | Výstupy s dvojitými uvozovkami |
Výstupní lomítko |
Specifikátory různých formátů
Formátovací specifikátor | Použití a popis pro printf C | Typ argumentu |
% | Psaní doslovného "%" | |
c | Vý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 |
s | Vytiskněte řetězec znaků. Argument musí být ukazatelem počátečního prvku pole znaků char | char * |
d i | Výstup desetinné reprezentace celé hodnoty se znaménkem | int |
o | Výstup osmičkové reprezentace bez signifikované celočíselné hodnoty | nepodepsaný 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 |
u | Výstup desetinné konverzace bez signifikované celočíselné hodnoty. Pokud jsou převedená hodnota a přesnost obě, pak nejsou vyvedeny žádné symboly | nepodepsaný int |
f F | Výstup desetinné reprezentace čísla s plovoucí desetinnou čárkou | dvakrá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 konverzi | dvakrát |
a A | Hexadecimální reprezentace čísla s plovoucí desetinnou čárkou | dvakrá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řesnosti | dvakrát |
n | Vrá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řesnost | int * |
str | Výstup ukazatele | prázdný * |
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élka | Popis |
h | U krátkých nebo nepodepsaných krátkých typů |
l | U dlouhých nebo nepodepsaných dlouhých typů |
L | Pro dlouhý dvojitý typ |
Příklady
1. Popis printf C a výsledky volání každé funkce:
2. Zobrazení jednoduché dialogové zprávy:
printf ("zpráva");
3. Programový kód:
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:
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í
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, ...);
Jednoduchý příklad práce s funkcí scanf:
#include
int hlavní () {
int a;
float b;
scanf ("% d% f", a, b);
}}
- Digitální multiplexer: popis, účel, typy
- Delphi poskládá v Pascalu
- Jak psát do php souboru
- Linux: Najděte soubory pomocí terminálu
- Java: práce se soubory - psaní, čtení, mazání
- Správce souborů: historie výskytu termínu a přehled několika správců souborů
- Který program pro formátování flash disků je lepší
- Symboly v PHP: řetězec na číslo a zpět
- Co dělá funkce PHP microtime?
- Podrobnosti o odstraňování vazeb v CS CS
- Čtení souboru se souborem získává obsahovou funkci PHP
- Uživatelský soubor crontab: příklady, popis a recenze
- Použití metody replace ()
- Práce s objekty souborů: otevřete, přečtěte a zapisujte soubory do Pythonu
- Hledání řádku v řetězci PHP: popis funkcí
- PHP sprintf: formátování a zpracování řetězců
- Funkce strpos v PHP: určuje pozici podřetězce
- Formátovací čísla: funkce PHP number_format ()
- Kontrola existence souboru PHP file_exists
- Seznam všech Zahrnout vysvětlení C na C
- Funkce Scanf C: popis