De functie vfprintf () in C ++ wordt gebruikt om een opgemaakte string naar een bestandsstroom te schrijven.
vfprintf () prototype
int vfprintf (FILE * stream, const char * format, va_list vlist);
De vfprintf()
functie schrijft de string waarnaar het formaat verwijst naar de bestandsstroom. De tekenreeksindeling kan indelingsspecificaties bevatten die beginnen met% die worden vervangen door de waarden van variabelen die worden doorgegeven als een lijst vlist.
Het wordt gedefinieerd in het header-bestand.
vfprintf () Parameters
- stream: een output-bestandsstream om het resultaat te schrijven.
- format: Pointer naar een met null beëindigde string die naar de bestandsstroom wordt geschreven. Het bestaat uit tekens samen met optionele indelingsspecificaties die beginnen met%.
De formaatspecificaties worden vervangen door de waarden van de respectievelijke variabelen die volgen op de formaatreeks.
De formaatspecificatie heeft de volgende onderdelen:
- Een toonaangevend% -teken
- Vlaggen: Optioneel een of meer vlaggen die het conversiegedrag wijzigen.
- -: Links uitvullen van het resultaat binnen het veld. Standaard is het goed gerechtvaardigd.
- +: Het teken van het resultaat wordt aan het begin van de waarde gehecht, zelfs voor positieve resultaten.
- Spatie: als er geen teken is, wordt er een spatie aan het begin van het resultaat toegevoegd.
- #: Er wordt een alternatieve vorm van conversie uitgevoerd.
- 0: Het wordt gebruikt voor integer en drijvende-kommagetallen. Voorloopnullen worden gebruikt om de cijfers in plaats van de spatie te vullen.
- Breedte: een optionele * of geheel getal die wordt gebruikt om een veld met een minimale breedte op te geven.
- Precisie: een optioneel veld bestaande uit een. gevolgd door * of geheel getal of niets om de precisie te specificeren.
- Lengte: een optionele lengtemodificator die de grootte van het argument aangeeft.
- Specifier: een specificatie van het conversieformaat. De beschikbare formaatspecificaties zijn als volgt:
Formaatspecificatie Omschrijving % Afdrukken% c Schrijft een enkel teken s Schrijft een tekenreeks d of i Converteert een geheel getal met teken naar een decimale weergave O Converteert een geheel getal zonder teken naar een octale weergave X of x Converteert een geheel getal zonder teken naar een hexadecimale weergave u Converteert een geheel getal zonder teken naar een decimale weergave F of f Converteert een getal met een drijvende komma naar de decimale weergave E of e Converteert een getal met een drijvende komma naar de decimale exponentnotatie A of een Converteert drijvende-kommagetal naar de hexadecimale exponent G of g Converteert drijvende-kommagetal naar decimale of decimale exponentnotatie n Retourneert het aantal tekens dat tot dusver door deze aanroep naar de functie is geschreven. Het resultaat wordt geschreven naar de waarde waarnaar het argument verwijst p Schrijft een door de implementatie gedefinieerde tekenreeks die een pointer definieert. Dus het algemene formaat van de formaatspecificatie is:
%(flags)(width)(.precision)(length)specifier
- vlist: een lijst met argumenten die de gegevens bevatten die moeten worden geschreven.
vfprintf () Retourwaarde
Als dit lukt, vfprintf()
retourneert de functie het aantal geschreven tekens. Bij een storing wordt een negatieve waarde geretourneerd.
Voorbeeld: hoe de functie vfprintf () werkt
#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; )
Wanneer u het programma uitvoert, wordt het volgende naar het bestand data.csv geschreven:
naam, leeftijd John, 13 Harry, 41 Kim, 26 Yuan, 21 Laxmi, 32