Funktsiooni vfprintf () kaustas C ++ kasutatakse vormindatud stringi kirjutamiseks failivoogu.
vfprintf () prototüüp
int vfprintf (FILE * voog, const char * formaat, va_list vlist);
vfprintf()
Funktsioon kirjutab stringi osutas poolt vormingus faili oja oja. Stringi formaat võib sisaldada vorminguspetsifikaate, mis algavad% -st, mis asendatakse loendi vlistina edastatud muutujate väärtustega.
See on määratletud päisefailis.
vfprintf () parameetrid
- voog: väljundfaili voog tulemuse kirjutamiseks.
- formaat: kursor nulliga lõpetatud stringi jaoks, mis kirjutatakse failivoogu. See koosneb märkidest koos valikuliste vorminguspetsifikaatoritega, mis algavad% -ga.
Vorminguspetsifikaatorid asendatakse vastavate muutujate väärtustega, mis järgivad vormindusstringi.
Vorminguspetsiifil on järgmised osad:
- Juhtiv% märk
- Lipud: valikuliselt üks või mitu lippu, mis muudab konversioonikäitumist.
- -: vasakpoolne põhjendab tulemust väljal. Vaikimisi on see õigustatud.
- +: Tulemuse märk kinnitatakse väärtuse algusesse ka positiivsete tulemuste korral.
- Tühik: kui märki pole, lisatakse tulemuse algusesse tühik.
- #: Teostatakse teisenduse alternatiivne vorm.
- 0: Seda kasutatakse täis- ja ujukomaarvuks. Numbrite sisestamiseks tühiku asemel kasutatakse juhtnulle.
- Laius: valikuline * või täisarv, mida kasutatakse minimaalse laiuse välja määramiseks.
- Täpsus: valikuline väli, mis koosneb a. millele järgneb * või täisarv või mitte midagi täpsuse täpsustamiseks.
- Pikkus: valikuline pikkuse muutja, mis määrab argumendi suuruse.
- Täpsustaja: teisendusvormingu täpsustaja. Saadaval olevad vorminguspetsifikaatorid on järgmised:
Vorminguspetsifikaator Kirjeldus % Prindib% c Kirjutab ühe tähemärgi s Kirjutab märgistringi d või i Teisendab allkirjastatud täisarv kümnendarvudeks o Teisendab allkirjata täisarv kaheksakujuliseks X või x Teisendab allkirjastamata täisarv kuueteistkümnendsüsteemis u Teisendab allkirjata täisarv kümnendarvudeks F või f Teisendab ujukoma numbri kümnendarvuks E või e Teisendab ujukomaarv kümnendkoha astendikuks A või a Teisendab ujukomaarv kuueteistkümnendsüsteemi eksponendiks G või g Teisendab ujukomaarvu kümnend- või kümnendarvulise astendina n Tagastab selle kutsega seni kirjutatud märkide arvu funktsioonile. Tulemus kirjutatakse väärtusele, millele argument osutab lk Kirjutab kursori määratleva rakenduse määratletud märgijada. Seega on vorminguspetsifikaatori üldine vorming:
%(flags)(width)(.precision)(length)specifier
- vlist: argumentide loend, mis sisaldab kirjutatavaid andmeid.
vfprintf () Tagastusväärtus
Kui see õnnestub, vfprintf()
tagastab funktsioon kirjutatud märkide arvu. Ebaõnnestumisel tagastab negatiivse väärtuse.
Näide: Kuidas funktsioon vfprintf () töötab
#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; )
Programmi käivitamisel kirjutatakse faili data.csv järgmine:
nimi, vanus John, 13 Harry, 41 Kim, 26 Yuan, 21 Laxmi, 32