Printf C: descriere, formatare, exemple

Funcția de ieșire a consolei standard în C este printf. Descrierea acestuia este conținută în fișierul header stdio.h. Cu această funcție, puteți ieși la consola date sau mesaje utilizator. Limba C este sensibilă la minuscule. De exemplu, cele două funcții printf și scanf diferă de Printf și Scanf ca acestea. Toate caracterele din funcțiile printf și scanf trebuie, de asemenea, să fie scrise cu majuscule. Unul dintre cele mai simple exemple de C printf, care afișează salutul familiar de salut lume, este:

printf c descriere

Definirea funcțiilor grupului printf în fișierul "stdio.h"

Fișierul "stdio.h" se referă la biblioteca standard I / O în limba C. Descrierea funcțiilor printf și a altor funcții similare este dată în aceasta după cum urmează:

printf c descriere

Funcțiile enumerate efectuează încărcarea datelor din anumite locații, le convertesc la un șir de caractere și le trimit la fluxurile de ieșire specificate.

Familia de funcții printf

Funcțiile grupului printf în limbajul C servesc la prelucrarea și transmiterea formatată a datelor într-un flux standard. Mai mult decât atât vprintf de înregistrare și funcțiile printf generează standard stdout de debit, vfprintf fprintf și funcția de valori de ieșire argumente trimise la un moment de ieșire predeterminată, și snprintf, sprintf, vsprintf vsnprintf și scrie date în șirul de caractere. Toate funcțiile de mai sus funcționează utilizând un șir de formate care indică conversiile argumentului necesar pentru ieșire.

printf c formatare

Funcția fprintf scrie rezultatul în fluxul de ieșire. Tamponul, care este un șir de caractere, imprimă rezultatul funcției sprintf. Comportamentul funcției este nedefinit dacă șirul de ieșire depășește dimensiunea matricei de tampoane.

Funcția snprintf, ca cea precedentă, scrie datele într-un tampon de șir. Șirul de caractere rezultat se termină cu un caracter nul, cu excepția cazului în bufsz (mărimea tamponului) este zero. În caz contrar, în cazul în care bufsz valoarea este zero, atunci nu există nici un tampon de ieșire, și tamponul poate fi un pointer nul, dar valoarea returnată (numărul de bytes care ar fi trebuit înregistrate) este încă în curs de calculat.

Funcția printf_s acționează în general în același mod ca și printf, cu excepția unui moment. Diferența principală în printf descriere printf_s în C și este următoarea: funcția printf_s verifică șirul de format pentru prezența caractere valide în contrast cu printf, care verifică numai șirul de format pentru indicatorul nul.

Să aruncăm o privire mai atentă la funcția printf.

Descrierea generală

În C, caracterele sunt tipărite prin fluxul de ieșire standard apelând funcția printf. Comanda printf din C formatează setul de date de ieșire și sunt trimise la fluxul de ieșire standard stdout. Valorile transmise ca argumente de funcții sunt trimise către consola în funcție de șirul de formatare specificat, care la rândul său include două tipuri de elemente. Primul tip este caracterele afișate pe ecran, iar elementele care determină caracteristicile formatului de date și care sunt responsabile de metoda de reprezentare a argumentelor în ieșire sunt legate de cel de-al doilea tip.

Când se imprimă variabilele de la printf la C, combinațiile de caractere speciale din șirul de argument sunt înlocuite cu datele convertite conform acestor simboluri, iar pentru fiecare tip de date există specificații de format de ieșire proprii.

Tipul funcției și valoarea returnată

Funcția printf de tip int întoarce o valoare întregă indicând numărul de caractere imprimate pe ecran. De exemplu, puteți atribui:

int k = printf ("Bună ziua% c% d% s", "a", 11, "tot!")

și apoi de la valoarea variabilei k, este ușor de determinat dacă a apărut o eroare în ieșire. Dacă valoarea returnată este negativă (dacă funcția returnează "-1"), puteți concluziona că a apărut o eroare în timpul executării acesteia.

Sintaxă și dependențe

Pentru a utiliza funcția printf, trebuie să montați fișierul header "stdio.h" după cum urmează:

#include

Șablonul de funcții arată astfel:

int printf (const char * format, ...)

Elipsa se referă la lista argumentelor care urmează a fi extrase. Funcția printf poate fi utilizat cu un număr diferit de argumente, dar primul este întotdeauna limitat pe ambele părți cu ghilimele duble, iar fiecare ulterioare ar trebui să fie separate de punctul anterior. Ceea ce este scris în ghilimele duble și nu este o specificație a formatului este tipărit fără modificări, în caz contrar, dacă se întâlnește calificatorul, tipul de valoare este copiat.

Formatarea formatului de format:

% [steaguri] [lățime] [poziția] [lungimea] tip

printf c variabile de ieșire

Formatarea de la printf la valorile de ieșire C

Citirea unui format de linie, prezentate în paranteze după numele funcției fiind numit, are loc numai într-o singură direcție: de la stânga la dreapta, iar primul argument, specificat după cele mai multe din acest șir este afișată numai în cazul în care caietul de sarcini este îndeplinită mai întâi. Până la terminarea șirului de formate, specificațiile specificate în acesta vor iniția transformarea și tipărirea argumentelor ulterioare. În șirul de formate, caracterul spațial este tratat ca un caracter obișnuit și transmis la ieșire în cazurile în care acesta nu este utilizat în expresia de specificare a formatului.

Simbolul "%" indică începutul specificației formatului de ieșire, urmată de codul format. Toate câmpurile din specificație sunt separate, definind condițiile de formatare pentru numere sau simboluri.

Producția formatată a printf în C are propriile caracteristici. În cazul în care numărul de argumente listate depășește numărul de specificații de format, ele sunt sărite și nu sunt emise. În caz contrar, dacă specificația formatului este mai mare decât valorile din lista de argumente care urmează să fie imprimate, rezultatul apelului funcției nu este determinat.



Pentru a specifica în mod explicit că un argument rând este necesar să se folosească, posibilitatea de a folosi „% m $“ în loc de „%“ și „* m $“ în loc de „*“ și m, o valoare zecimală întreagă care reprezintă poziția argument dorit (indexare începe cu unul) .

parametrii

curentFlux de ieșire pentru scrierea în fișier
tamponIndică un șir de caractere pentru scrierea ulterioară a acestuia
bufszdetermină numărul de caractere, permisă pentru scriere: valoarea maximă este bufsz-1 și un alt terminator nul
formatUn pointer la un șir multibyte cu un delimitator nul care specifică modul de interpretare a argumentelor de ieșire
Steaguri utilizate în șirul format
paviliondescriere
-Aliniați rezultatul spre stânga în câmpul de ieșire
+Când se emite o valoare numerică cu un semn, "+" este forțată să fie imprimată înainte de o valoare pozitivă (în mod implicit, numai ";" este afișat înaintea unei valori negative)
0Pentru numerele întregi și cele în virgulă mobilă, se folosesc zerouri în loc de caractere spațiale pentru a umple cifrele din stânga în cazul în care este specificată o lățime de câmp care depășește lungimea numărului. Pentru numere întregi, steagul este ignorat dacă precizia este specificată explicit. Pentru alte transformări care utilizează acest steag, comportamentul funcției este nedefinit. Steagul "0" nu este luat în considerare dacă există un steag ";"
spațiuDacă ieșirea unei expresii care are un semn nu începe cu caracterul acelui caracter sau este goală, se adaugă un spațiu la rezultat. Steagul "spațiu" este ignorat dacă există un "+"
#Există o formă alternativă de conversie
Secvențe de control
secvențărezultat
asemnal sonor
nTraducerea într-o linie nouă
rReturnați cursorul la începutul liniei
tfila
vTabulare verticală
"Cotația de ieșire dublă
Ieșire

Diferite specificatoare de format

Format SpecificatorUtilizare și descriere pentru printf CTip de argument
%Scriind un literal "%"
cIeșiți un caracter. Argumentul este convertit în caractere nesemnate. Când se utilizează modificatorul "l", argumentul este convertit la un șir de caracterecaracterele nesemnate
sImprimați un șir de caractere. Argumentul trebuie să fie un indicator al elementului inițial al matricei caracterelor charchar *
d
eu
Rezultatul unei reprezentări zecimale a unei valori întregi cu un semnint
oRezultatul unei reprezentări octale fără o valoare întregă semnatănesignificat int
x
X
Efectuați o reprezentare hexazecimală fără o valoare întregă semnată. Caracterele "a", "b", "c", "d", "e", "f" sunt folosite pentru a converti "x". Și pentru transformarea "X" - "A", "B", "C", "D", "E", "F"nesignificat int
uEfectuați o conversie zecimală fără o valoare întregă semnată. Dacă valoarea convertită și precizia sunt ambele, atunci nu sunt emise simbolurinesignificat int
f
F
Rezultatul unei reprezentări zecimale a unui număr în virgulă mobilă cu un semndublu
e
E
Producția de o reprezentare zecimală a numerelor în virgulă mobilă exponențială, și rotunjite transformat, astfel încât înainte de virgula rămâne o cifră, iar numărul de cifre după virgulă corespunde cu precizia reprezentării (precizia implicită este de 6, iar dacă specificați 0, virgula nu este afișat deloc). Simbolul "e" este afișat în majuscule sau minuscule, în funcție de conversiedublu
o
A
Reprezentarea hexazecimală a unui număr cu virgulă mobilădublu
g
G
Ieșirea unei reprezentări zecimale a unui număr în virgulă mobilă sau a reprezentării sale exponențiale zecimale în funcție de valoare și acuratețedublu
nReturnați numărul de elemente imprimate de printf. Rezultatul este scris în variabila indicată de argument. Specificațiile nu trebuie să conțină steaguri, lățimi de câmp sau precizieint *
pIeșirea indicatoruluivoid *

printf c formatare

Modificatorul lățimii câmpului

În șirul format în printf C, un întreg poate fi scris după semnul procentului și înainte de comanda de formatare. Este un modificator de lățime a câmpului și afectează prezentarea datelor afișate. Lățimea minimă a câmpului, destinate valorilor determinate de acest număr, iar prezența acestui modificator, dacă argumentul este mai mică decât domeniile sale alocate cauza rezultatului adăugarea spații sau zerouri. Implicit este caracterul spațial, însă îl puteți seta la zero specificându-l înainte de specificația lățimii. Modificatorul specifică lățimea minimă, iar orice valoare care depășește acest minim va fi imprimată fără interferențe. Un număr, de exemplu, format din mai puțin de opt caractere și imprimat cu specificația "% 08d", va fi actualizat la opt caractere necesare cu zerouri.

Astfel de modificatori pot specifica parametri pentru precizie sau aliniere.

Modificator de precizie

Modificatorul de precizie este utilizat pentru a determina numărul de cifre zecimale tipărite într-o reprezentare numerică. Pentru a adăuga un modificator de precizie, trebuie să introduceți o perioadă după specificarea lățimii câmpului și să precizați după el valoarea de precizie dorită. Modificatorul de precizie este definit pentru formatele "e", "f", "a", "E", "A" și "F". Pentru numere întregi, modificatorul stabilește numărul de cifre afișate, adăugând zerouri la cifra din stânga, dacă este necesar și, atunci când derivă numere raționale, determină numărul necesar de zecimale. În ceea ce privește variabilele de șir: următorul număr după punctul din modificatorul de precizie servește drept determinant al lungimii maxime a câmpului la ieșire. De exemplu, pentru o specificație de format "% 4.8s", va fi afișat un șir, lungimea căruia este cuprinsă între patru și opt caractere, dacă este depășită, caracterele extreme vor fi omise.

Alte modificatoare de format

Alinierea în mod prestabilit este corect justificată, dar aceasta poate fi modificată prin introducerea unui ";" după "%". Această specificație de format stabilește alinierea la stânga.

În plus, funcția printf este capabilă să distingă între tipurile scurte și lungi de valori întregi de ieșire. Calificările valide sunt "o", "d", "u", "i", "x" și "X". Tipul lung al valorii este setat de modificatorul "l", iar tipul scurt de către modificatorul "h". De exemplu, la ieșirea unui întreg lung și a unei valori de int uns nespecificat de tip int, specificațiile formatelor arată "% ld" și, respectiv, "% hu".

lungimedescriere
hPentru tipurile scurte sau nesemnate scurte
LPentru tipuri lungi sau nesemnate lungi
LPentru tipul lung dublu

exemple

1. Descrierea printf C și rezultatele apelului pentru fiecare funcție:

formatat outputf printf c

2. Afișarea unui simplu mesaj de dialog:

printf ("mesaj");

3. Codul programului:

exemple printf c

Expresiile specificate în ghilimele duble înainte de specificațiile formatului sunt tipărite pe ecran, precum și argumentele care urmează șirului de formate. Rezultatul funcțiilor de mai sus printf C, o descriere a rezultatului:

exemple printf c

Acest exemplu ilustrează ieșirea pe ecran utilizând diferite formate de șir, variabile întregi, simboluri și numere de puncte în virgulă mobilă.

Funcția de scanare standard de intrare și exemple de utilizare a acesteia

scanf c format

Funcția scanf este utilizată pentru a citi datele introduse de la tastatură. Descriere printf și scanf în C reprezentate în fișierul antet „stdio.h“.

scanf ("specificatori de format", valoare1, valoare2, ...);

c printf format

Un exemplu simplu de lucru cu funcția scanf:

#include

int main () {

int a;

float b;

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

}

Distribuiți pe rețelele sociale:

înrudit
Fișier SQL. Formatul de fișier SQL: descrierea extensieiFișier SQL. Formatul de fișier SQL: descrierea extensiei
Delphi postează în PascalDelphi postează în Pascal
Cum se scrie în fișierul phpCum se scrie în fișierul php
Eroare kernel32.dll - ce ar trebui să fac?Eroare kernel32.dll - ce ar trebui să fac?
Conversia de tip. Funcții rotunde și Trunc în PascalConversia de tip. Funcții rotunde și Trunc în Pascal
Java: lucrul cu fișiere - scrierea, citirea, ștergereaJava: lucrul cu fișiere - scrierea, citirea, ștergerea
Simboluri în PHP: șir la număr și înapoiSimboluri în PHP: șir la număr și înapoi
Detalii despre cum să eliminați legăturile din CS CSDetalii despre cum să eliminați legăturile din CS CS
Proceduri standard și funcții în PascalProceduri standard și funcții în Pascal
Citirea unui fișier cu fișierul obține funcția de conținut PHPCitirea unui fișier cu fișierul obține funcția de conținut PHP
» » Printf C: descriere, formatare, exemple