Funkcija vfprintf () v jeziku C ++ se uporablja za zapis formatiranega niza v tok datotek.
prototip vfprintf ()
int vfprintf (FILE * tok, format const char *, va_list vlist);
vfprintf()
Funkcija piše niz opozoril, da ga formatu toka datoteke tok. Format niza lahko vsebuje specifikatorje formatov, ki se začnejo z% in jih nadomestijo vrednosti spremenljivk, ki se posredujejo kot seznam vlist.
Določen je v datoteki glave.
vfprintf () Parametri
- tok: izhodni tok datoteke za zapis rezultata.
- format: Kazalec na ničelno zaključen niz, ki je zapisan v tok datotek. Sestavljen je iz znakov in izbirnih specifikatorjev formata, ki se začnejo z%.
Specifikatorji oblike se nadomestijo z vrednostmi ustreznih spremenljivk, ki sledijo nizu oblike.
Specifikator oblike ima naslednje dele:
- Vodilni znak%
- Zastave: neobvezna ena ali več zastavic, ki spreminjajo vedenje pretvorbe.
- -: Levo utemeljite rezultat znotraj polja. Privzeto je upravičeno.
- +: Znak rezultata je pritrjen na začetek vrednosti, tudi za pozitivne rezultate.
- Presledek: Če ni nobenega znaka, je presledek pritrjen na začetek rezultata.
- #: Izvede se druga oblika pretvorbe.
- 0: Uporablja se za celo število in število s plavajočo vejico. Za zapolnitev številk namesto presledka se uporabljajo vodilne ničle.
- Širina: neobvezna vrednost * ali celo število, ki se uporablja za določanje polja najmanjše širine.
- Natančnost: neobvezno polje, sestavljeno iz a. čemur sledi * ali celo število ali nič, kar določa natančnost.
- Dolžina: neobvezni modifikator dolžine, ki določa velikost argumenta.
- Specifikator: Specifikator pretvorbenega formata. Razpoložljivi opisniki oblike so naslednji:
Format Specifier Opis % Odtisov% c Napiše en sam znak s Zapiše niz znakov d ali i Pretvori podpisano celo število v decimalno predstavitev o Pretvori nepodpisano celo število v osmiško predstavitev X ali x Pretvori nešteto celo število v šestnajstiško predstavitev u Pretvori nešteto celo število v decimalno predstavitev F ali f Pretvori število s plavajočo vejico v decimalno predstavitev E ali e Pretvori število s plavajočo vejico v zapis decimalnega eksponenta A ali a Pretvori število s plavajočo vejico v šestnajstiški eksponent G ali g Pretvori število s plavajočo vejico v decimalni ali decimalni eksponentni zapis n Vrne število doslej napisanih znakov s tem klicem funkcije. Rezultat se zapiše v vrednost, na katero opozarja argument str Zapiše zaporedje znakov, opredeljeno z izvedbo, ki definira kazalec. Tako je splošna oblika specifikatorja oblike:
%(flags)(width)(.precision)(length)specifier
- vlist: seznam argumentov, ki vsebujejo podatke za zapis.
vfprintf () Vrnjena vrednost
Če je vfprintf()
funkcija uspešna, vrne število zapisanih znakov. Ob okvari vrne negativno vrednost.
Primer: Kako deluje funkcija vfprintf ()
#include #include void write(FILE* fp, const char *fmt,… ) ( va_list args; va_start(args, fmt); vfprintf(fp, fmt, args); va_end(args); ) int main () ( FILE *fp = fopen("data.csv","w"); char name(5)(50) = ("John","Harry","Kim","Yuan","Laxmi"); int age(5) = (13,41,26,21,32); write(fp, "%s,%s", "name", "age"); for (int i=0; i<5; i++) write(fp, "%s,%d", name(i), age(i)); return 0; )
Ko zaženete program, bo v datoteko data.csv zapisano naslednje:
ime, starost John, 13 Harry, 41 Kim, 26 Yuan, 21 Laxmi, 32