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:
conținut
- Definirea funcțiilor grupului printf în fișierul "stdio.h"
- Familia de funcții printf
- Descrierea generală
- Tipul funcției și valoarea returnată
- Sintaxă și dependențe
- Formatarea de la printf la valorile de ieșire c
- Parametrii
- Diferite specificatoare de format
- Modificatorul lățimii câmpului
- Modificator de precizie
- Alte modificatoare de format
- Exemple
- Funcția de scanare standard de intrare și exemple de utilizare a acesteia
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ă:
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.
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
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
curent | Flux de ieșire pentru scrierea în fișier |
tampon | Indică un șir de caractere pentru scrierea ulterioară a acestuia |
bufsz | determină numărul de caractere, permisă pentru scriere: valoarea maximă este bufsz-1 și un alt terminator nul |
format | Un pointer la un șir multibyte cu un delimitator nul care specifică modul de interpretare a argumentelor de ieșire |
pavilion | descriere |
- | 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) |
0 | Pentru 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țiu | Dacă 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ță | rezultat |
a | semnal sonor |
n | Traducerea într-o linie nouă |
r | Returnați cursorul la începutul liniei |
t | fila |
v | Tabulare verticală |
" | Cotația de ieșire dublă |
Ieșire |
Diferite specificatoare de format
Format Specificator | Utilizare și descriere pentru printf C | Tip de argument |
% | Scriind un literal "%" | |
c | Ieșiți un caracter. Argumentul este convertit în caractere nesemnate. Când se utilizează modificatorul "l", argumentul este convertit la un șir de caractere | caracterele nesemnate |
s | Imprimați un șir de caractere. Argumentul trebuie să fie un indicator al elementului inițial al matricei caracterelor char | char * |
d eu | Rezultatul unei reprezentări zecimale a unei valori întregi cu un semn | int |
o | Rezultatul 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 |
u | Efectuați o conversie zecimală fără o valoare întregă semnată. Dacă valoarea convertită și precizia sunt ambele, atunci nu sunt emise simboluri | nesignificat int |
f F | Rezultatul unei reprezentări zecimale a unui număr în virgulă mobilă cu un semn | dublu |
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 conversie | dublu |
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țe | dublu |
n | Returnaț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 precizie | int * |
p | Ieșirea indicatorului | void * |
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".
lungime | descriere |
h | Pentru tipurile scurte sau nesemnate scurte |
L | Pentru tipuri lungi sau nesemnate lungi |
L | Pentru tipul lung dublu |
exemple
1. Descrierea printf C și rezultatele apelului pentru fiecare funcție:
2. Afișarea unui simplu mesaj de dialog:
printf ("mesaj");
3. Codul programului:
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:
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
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, ...);
Un exemplu simplu de lucru cu funcția scanf:
#include
int main () {
int a;
float b;
scanf ("% d% f", a, b);
}
- Înregistrarea poloneză inversă: algoritm, metode și exemple
- Fișier SQL. Formatul de fișier SQL: descrierea extensiei
- Delphi postează în Pascal
- Cum se scrie în fișierul php
- Eroare kernel32.dll - ce ar trebui să fac?
- Conversia de tip. Funcții rotunde și Trunc în Pascal
- Java: lucrul cu fișiere - scrierea, citirea, ștergerea
- Simboluri în PHP: șir la număr și înapoi
- Detalii despre cum să eliminați legăturile din CS CS
- Proceduri standard și funcții în Pascal
- Citirea unui fișier cu fișierul obține funcția de conținut PHP
- jаvascript: lucrul cu șiruri de caractere, funcții
- Rusă în lumea modernă
- Funcțiile de bază ale limbii
- Modalități de a crea un fișier de lilieci
- Fișier de utilizator crontab: exemple, descriere și recenzii
- Lucrul cu obiecte de fișiere: deschideți, citiți și scrieți fișiere în Python
- Exemplu de jQuery. Exemple simple de script-uri pe jQuery
- Funcția strpos din PHP: determinarea poziției substringului
- Lista tuturor explicațiilor C despre C
- Funcția Scanf C: descriere