Printf C: opis, oblikovanje, primeri
Standardna funkcija izhodne konzole v C je printf. Njen opis je vsebovan v datoteki header stdio.h. S to funkcijo lahko izpiąete podatke ali uporabniąka sporočila v konzolo. Jezik C je občutljiv na velike in male črke. Na primer, dve funkciji printf in scanf se razlikujejo od Printf in Scanf, podobno kot njihova. Vse znake v funkcijah printf in scanf morajo biti tudi male črke. Eden od najpreprostejših primerov C printf, ki prikazuje znani pozdravni svet, je:
Vsebina
- Določanje funkcij skupine printf v datoteki "stdio.h"
- Funkcija family printf
- Splošni opis
- Vrsta funkcije in vrnjena vrednost
- Sintaksa in odvisnosti
- Oblikovanje izhodnih vrednosti od printf do c
- Parametri
- Različni specifikatorji formata
- Modifikator širine polja
- Modifikator natančnosti
- Drugi modifikatorji zapisa
- Primeri
- Standardna vhodna funkcija scanf in primere njegove uporabe
Določanje funkcij skupine printf v datoteki "stdio.h"
Datoteka "stdio.h" se nanaša na standardno knjižnico I / O v jeziku C. Opis funkcij printf in podobnih funkcij je podan v nadaljevanju:
Naštete funkcije izvajajo nalaganje podatkov z določenih lokacij, jih pretvarjajo v niz znakov in jih pošljejo v določene izhodne tokove.
Funkcija family printf
Funkcije skupine printf v jeziku C služijo obdelavi in formatiranju izhodnih podatkov v standardni tok. Poleg printf vprintf in snemanja ustvariti standardni tok stdout, fprintf vfprintf in funkcija vrednosti izhodne argumente poslana na neki vnaprej določeni izhod, in snprintf, sprintf, vsnprintf vsprintf in zapisovanje podatkov v niz znakov. Vse zgornje funkcije delujejo z uporabo formatnega niza, ki prikazuje potrebne konverzije argumentov za izhod.
Funkcija fprintf zapisuje rezultat v izhodni tok. Vmesni pomnilnik, ki je niz znakov, natisne rezultat funkcije sprintf. Obnašanje funkcije je nedefinirano, če niz, ki ga želite oddati, presega velikost vmesnega polja.
Funkcija snprintf, tako kot prejšnja, zapisuje podatke v niz vmesnika. Nastali niz znakov se konča z ničelnim znakom, razen če je bufsz (velikost puferja) nič. V nasprotnem primeru, če je vrednost bufsz nič, potem ni izhoda buffer, in varovalni prav lahko null kazalec, vendar vrne vrednost (število bajtov, ki bi moralo biti zapisano) se vedno izračuna.
Funkcija printf_s na splošno deluje na enak način kot printf, razen za en trenutek. Glavna razlika v opisu printf_s v C in printf je naslednja: funkcija printf_s preveri formatni niz za veljavne znake, za razliko od printf, ki samo preveri formatni niz za prazen kazalec.
Poglejmo si natančneje funkcijo printf.
Splošni opis
V C znaki se natisnejo prek standardnega izhodnega toka, tako da pokličete funkcijo printf. Ukaz printf v C oblikuje izhodne podatke in jih pošljejo v standardni izhodni tok stdout. Vrednosti, ki so bile posredovane kot argumenti funkcij, se oddajajo v konzolo v skladu z določenim nizom oblikovanja, kar vključuje dve vrsti elementov. Prva vrsta so znaki, prikazani na zaslonu, in elementi, ki določajo značilnosti oblike podatkov in so odgovorni za način predstavitve argumentov v izhodu, so povezani z drugo vrsto.
Pri tiskanju spremenljivk iz printf v C se posebne kombinacije znakov v nizu argumentov nadomestijo s podatki, pretvorjenimi v skladu s temi simboli, in za vsako vrsto podatkov so lastne specifikacije za izhodni format.
Vrsta funkcije in vrnjena vrednost
Funkcija printf tipa int vrne celo število, ki označuje število znakov, natisnjenih na zaslonu. Na primer, lahko dodelite:
int k = printf ("Pozdravljeni% c% d% s", "a", 11, "vsi!")
in nato iz vrednosti spremenljivke k, je težko ugotoviti, ali je prišlo do napake v izhodu. Če je povratna vrednost negativna (če funkcija vrne "-1"), lahko ugotovite, da je prišlo do napake med njegovo izvedbo.
Sintaksa in odvisnosti
Če želite uporabiti funkcijo printf, morate datoteko glave "stdio.h" namestiti na naslednji način:
#include
Predloga funkcije izgleda takole:
int printf (const char * format, ...)
Elipsa se nanaša na seznam argumentov, ki jih je treba izpisati. Funkcijo printf lahko uporabite z različnim številom argumentov, vendar je prva na obeh straneh vedno omejena z dvojnimi narekovaji, vsaka naslednja pa mora biti ločena od prejšnjih vejic. Kaj je napisano v dvojnih narekovajih in ni specifikacija oblike je natisnjena brez sprememb, v nasprotnem primeru, če se kvalificira, se vrne njena vrednost kopira.
Formatiranje specifikacije oblike:
% [zastave] [širina] [položaj] [dolžina] vrsta
Oblikovanje izhodnih vrednosti od printf do C
Branje obliko linije, ki je prikazana v oklepajih ime funkcije, ki se imenuje, se pojavlja samo v eno smer: od leve proti desni, in se prikaže prvi argument, ki je določen, ko večina tega niza le, če je specifikacija prvič srečala. Dokler se vrstica format ne konča, bodo specifikacije, navedene v njej, sprožile preoblikovanje in tiskanje nadaljnjih argumentov. presledek Oblika niz se obravnava kot običajni značaj in prenesejo do zaključka, v primerih, ko se ne uporablja v specifikaciji izraz formatu.
Simbol "%" označuje začetek specifikacije izhodnega formata, ki ji sledi kodo oblike. Vsa polja v specifikaciji so ločena in določajo pogoje oblikovanja številk ali simbolov.
Formatirani izhod printf v C ima lastne značilnosti. Če število navedenih argumentov presega število specifikacij formatov, jih preskočimo in ne izstopimo. V nasprotnem primeru, če je specifikacija formata večja od vrednosti na seznamu argumentov, ki jih želite natisniti, rezultat klica funkcije ni določen.
Za natančno določa, da je vrsta trditev treba uporabiti, možnost uporabe "% $ m" namesto "%" in "* $ m" namesto "*" in m celo število decimalno vrednost, ki predstavlja želeno argument položaj (indeksiranje začne z enim) .
Parametri
tok | Izhodni tok za pisanje v datoteko |
pufer | Pokazatelj na niz znakov za nadaljnje pisanje |
bufsz | Določa število znakov, dopustna za pisanje: največja vrednost je bufsz-1 in še en null terminator |
formatu | Kazalec na multibajtni niz z ničelnim ločilom, ki določa, kako razlagati izhodne argumente |
Zastava | Opis |
- | Poravnajte rezultat na levo v izhodnem polju |
+ | Ko izpiąemo ątevilčno vrednost z znakom, je "+" prisiljena natisniti pred pozitivno vrednostjo (privzeto je pred negativno vrednostjo prikazana samo ";" |
0 | Za cela števila in številke s plavajočimi točkami se namesto znakov za presledek uporabijo vodilne ničle, da zapolnijo leve števke, če je določena širina polja, ki presega dolžino številke. Za cela števila je zastava prezrta, če je natančnost izrecno navedena. Za druge transformacije, ki uporabljajo to zastavo, je vedenje funkcije nedefinirano. Zastava "0" se ne upošteva, če je zastava ";" |
prostor | Če se rezultat izraza, ki ima znak, ne začne z znaki tega znaka ali je prazen, se rezultatu doda prostor. Zastava "space" se zanemari, če je oznaka "+" |
# | V teku je alternativna oblika preusmeritve |
Zaporedje | Rezultat |
a | Beep |
n | Prevod v novo vrstico |
r | Vrnitev kurzorja na začetek vrstice |
t | Tabulacija |
v | Vertikalna tabela |
" | Dvojni izpisi |
Izhodna poševnica |
Različni specifikatorji formata
Specifikator oblikovanja | Uporaba in opis za printf C | Vrsta trditve |
% | Napisati dobesedno "%" | |
c | Izhod en znak. Argument se pretvori v nepodpisani znak. Pri uporabi modifikatorja "l" se argument pretvori v niz znakov | nepodpisani znak |
s | Natisnite niz znakov. Argument mora biti kazalec na začetni element matrike znakov | char * |
d i | Rezultat decimalne predstavitve celostne vrednosti z znakom | int |
o | Rezultat oktalnega predstavljanja brez podpisane celovite vrednosti | unsigned int |
x X | Izvedite heksadecimalno predstavitev brez podano celoštevilske vrednosti. Znaki "a", "b", "c", "d", "e", "f" se uporabljajo za pretvorbo "x". In za transformacijo "X" - "A", "B", "C", "D", "E", "F" | unsigned int |
u | Izvedite decimalno pretvorbo brez vpisanega celega števila. Če sta pretvorjena vrednost in natančnost oba 0, potem ni nobenih simbolov | unsigned int |
f F | Rezultat decimalne predstavitve številke s plavajočo vejico z znakom | dvojno |
e E | Proizvodnja decimalno zastopanje eksponentne plavajočo vejico, in zaokroži preoblikovala tako, da pred vejico še eno mesto, in število mest za decimalno vejico ustreza točnosti zastopanja (privzeta natančnost je 6, in če podate 0, se vejica ne prikaže sploh). Simbol "e" je prikazan v zgornjem ali spodnjem primeru glede na pretvorbo | dvojno |
a A | Šestnajstišna predstavitev številke s plavajočo vejico | dvojno |
g G | Rezultat decimalne predstavitve številke s plavajočo vejico ali njegove decimalne eksponentne predstavitve, odvisno od vrednosti in natančnosti | dvojno |
n | Vrnite število elementov, ki jih natisne printf. Rezultat je zapisan v spremenljivko, na katero opozarja argument. Specifikacija ne sme vsebovati zastave, širine polja ali natančnosti | int * |
str | Izhod kazalca | void * |
Modifikator širine polja
V nizu formatov v printf C lahko za znakom odstotka in pred ukazom za oblikovanje zapisate celo število. Je modifikator širine polja in vpliva na predstavitev prikazanih podatkov. Najmanjša širina polja za vrednost je določena s to številko in prisotnost takega modifikatorja, če je argument manjši od dodeljenega polja, povzroči dodajanje presledkov ali ničel do rezultata. Privzeto je znak za prostor, vendar ga lahko nastavite na nič, tako da ga navedete pred širino. Modifikator določa najmanjšo širino in vsaka vrednost, ki presega ta najmanjši znesek, bo natisnjena brez motenj. Številka, na primer sestavljena iz manj kot osmih znakov in natisnjena s specifikacijo "% 08d", bo posodobljena z zahtevanimi osmimi znaki z ničli.
Taki modifikatorji lahko določijo tudi parametre za natančnost ali poravnavo.
Modifikator natančnosti
Natančni modifikator se uporablja za določitev števila decimalnih števil, natisnjenih v številčni predstavitvi. Če želite dodati natančnostni modifikator, morate določiti obdobje po določitvi širine polja in po njej določiti želeno vrednost natančnosti. Modifikator natančnosti je definiran za formate "e", "f", "a", "E", "A" in "F". Za cela števila, modifikator nastavi število prikazanih števk, dodaja ničle na levo številko, če je to potrebno, in pri izračunu racionalnih števil določi potrebno število decimalnih mest. V zvezi s spremenljivkami nizov: naslednja številka po točki v modifikatorju natančnosti služi kot determinant največje dolžine polja na izhodu. Na primer, za določeno specifikacijo formata "% 4.8s" se prikaže niz, katerega dolžina je v razponu od štirih do osmih znakov, če je presežena, se izredni znaki izpuščajo.
Drugi modifikatorji zapisa
Poravnava je privzeto upravičena, vendar je to mogoče spremeniti tako, da se za "%" doda ";". Ta oblika specifikacije nastavi poravnavo na levo.
Poleg tega je funkcija printf sposobna razlikovati med kratkimi in dolgimi vrstami vrednosti celotnega izhoda. Veljavni kvalifikatorji so "o", "d", "u", "i", "x" in "X". Dolgo vrsto vrednosti nastavi modifikator "l", kratki tip pa modifikator "h". Na primer, pri izpisu dolgega števila in vrednosti tipa kratkega nepodpisanega int specifikacije oblike izgledajo tako "% ld" kot "% hu".
Dolžina | Opis |
h | Za kratke ali nepodpisane kratke tipe |
l | Za dolge ali nepodpisane dolge vrste |
L | Za dolge dvojne tipe |
Primeri
1. Opis printf C in rezultati klica vsake funkcije:
2. Prikaz preprostega pogovornega okna:
printf ("sporočilo");
3. Programska koda:
Izrazi, navedeni v dvojnih narekovajih pred specifikacijami formata, so natisnjeni na zaslonu, pa tudi argumenti, ki sledijo nizu formatov. Rezultat zgornjih funkcij printf C, opis proizvodnje:
Ta primer ponazarja izhod na zaslon z različnimi oblikami niza, spremenljivki cele številke, simboli in številkami s plavajočimi točkami.
Standardna vhodna funkcija scanf in primere njegove uporabe
Funkcija scanf se uporablja za branje podatkov, vnesenih s tipkovnice. Opis printf in scanf v C je predstavljen v datoteki glave "stdio.h".
scanf ("format specifiers", vrednost1, vrednost2, ...);
Preprost primer dela s funkcijo scanf:
#include
int main () {
int a;
float b;
scanf ("% d% f", a, b);
}
- Kako rešiti problem v Excelu "Prva črka naslova"
- ASCII (ameriška standardna koda za izmenjavo informacij) - osnovno kodiranje besedila za latinsko…
- Povratni poljski zapis: algoritem, metode in primeri
- SQL datoteka. Format datoteke SQL: opis razširitve
- Delphi pozicije v Pascalu
- Linux: Poiščite datoteke, ki uporabljajo terminal
- Konverzijo tipa. Funkcije okroglega in trunca v Pascalu
- Z SQL: opis, sintakso, primeri
- Funkcija `INDEX` v Excelu: opis, uporaba in primeri
- Simboli v PHP: niz na število in nazaj
- Kaj počne funkcija PHP mikro čas?
- Funkcija tabeliranja: kako napisati program?
- Razvrščanje vrst analitičnih funkcij v Oracle. Analitične funkcije v Oracle in glavne tehnične…
- Branje datoteke z datoteko dobite vsebino PHP
- Razvrsti mehurček enodimenzionalne matrike: algoritem, programska koda v jeziku C
- Funkcija SQL SUBSTRING
- Osnovne funkcije jezika
- Uporabniška datoteka crontab: primeri, opis in ocene
- Funkcija strpos v PHP: določitev položaja podstavka
- Preverjanje prisotnosti datoteke datoteke PHP
- Seznam vseh Vključi C pojasnila o C