Funksjonen vfprintf () i C ++ brukes til å skrive en formatert streng til en filstrøm.
vfprintf () prototype
int vfprintf (FILE * stream, const char * format, va_list vlist);
Den vfprintf()
funksjonen skriver strengen peker til formatet til filen stream stream. Strengformatet kan inneholde formatspesifikatorer som begynner med% som erstattes av verdiene til variablene som sendes som en liste-liste.
Det er definert i topptekstfilen.
vfprintf () Parametere
- stream: En utdatafilstrøm for å skrive resultatet.
- format: peker til en null avsluttet streng som skrives til filstrømmen. Den består av tegn sammen med valgfrie formatspesifikatorer som begynner med%.
Formatspesifikatorene erstattes av verdiene til respektive variabler som følger formatstrengen.
Formatspesifikatoren har følgende deler:
- Et ledende% tegn
- Flagg: Valgfritt ett eller flere flagg som endrer konverteringsadferden.
- -: Venstre rettferdiggjør resultatet innenfor feltet. Som standard er det rettferdiggjort.
- +: Tegn på resultatet er festet til begynnelsen av verdien, selv for positive resultater.
- Mellomrom: Hvis det ikke er noe tegn, er et mellomrom festet til begynnelsen av resultatet.
- #: En alternativ form for konvertering utføres.
- 0: Den brukes til heltall og flytende nummer. Ledende nuller brukes til å putte tallene i stedet for mellomrom.
- Bredde: En valgfri * eller heltallverdi som brukes til å spesifisere minimumsbreddefelt.
- Presisjon: Et valgfritt felt som består av en. etterfulgt av * eller heltall eller ingenting for å spesifisere presisjonen.
- Lengde: En valgfri lengdemodifikator som spesifiserer størrelsen på argumentet.
- Spesifikator: En konverteringsformatspesifikator. De tilgjengelige formatspesifikasjonene er som følger:
Format Spesifikator Beskrivelse % Skriver ut% c Skriver et enkelt tegn s Skriver en karakterstreng d eller i Konverterer et signert heltall til desimalrepresentasjon o Konverterer et usignert heltall til oktal representasjon X eller x Konverterer et usignert heltall til heksadesimal representasjon u Konverterer et usignert heltall til desimalrepresentasjon F eller f Konverterer flytende nummer til desimalrepresentasjonen E eller e Konverterer flytende nummer til desimaleksponentnotasjonen A eller a Konverterer flytende nummer til den heksadesimale eksponenten G eller g Konverterer flytende nummer til enten desimal- eller desimaleksponentnotasjon n Returnerer antall tegn som hittil er skrevet av denne samtalen til funksjonen. Resultatet skrives til den verdien argumentet peker på s Skriver en implementeringsdefinert tegnsekvens som definerer en peker. Så det generelle formatet til formatspesifikatoren er:
%(flags)(width)(.precision)(length)specifier
- vlist: En liste med argumenter som inneholder dataene du skal skrive.
vfprintf () Returverdi
Hvis det lykkes, vfprintf()
returnerer funksjonen antall tegn som er skrevet. Ved feil returnerer den en negativ verdi.
Eksempel: Hvordan funksjonen vfprintf () fungerer
#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; )
Når du kjører programmet, blir følgende skrevet til data.csv-filen:
navn, alder John, 13 Harry, 41 Kim, 26 Yuan, 21 Laxmi, 32