C ++ vfprintf () - C ++ Standardbibliotek

Funktionen vfprintf () i C ++ bruges til at skrive en formateret streng til en filstrøm.

vfprintf () prototype

 int vfprintf (FILE * stream, const char * format, va_list vlist);

Den vfprintf()funktion skriver strengen peget på af format til filen stream strøm. Strengformatet kan indeholde formatspecifikatorer, der starter med%, der erstattes af værdierne for variabler, der sendes som en liste vlist.

Det er defineret i header-fil.

vfprintf () Parametre

  • stream: En outputfilstrøm til at skrive resultatet.
  • format: Markør til en null afsluttet streng, der skrives til filstrømmen. Den består af tegn sammen med valgfri formatspecifikationer, der starter med%.

    Formatspecifikationerne erstattes af værdierne for de respektive variabler, der følger formatstrengen.

    Formatspecifikatoren har følgende dele:

    • Et førende% tegn
    • Flag: Valgfrit et eller flere flag, der ændrer konverteringsadfærden.
      • -: Venstre retfærdiggør resultatet inden for feltet. Som standard er det retfærdiggjort.
      • +: Tegn på resultatet er knyttet til begyndelsen af ​​værdien, selv for positive resultater.
      • Mellemrum: Hvis der ikke er noget tegn, er der knyttet et mellemrum til begyndelsen af ​​resultatet.
      • #: En alternativ form for konvertering udføres.
      • 0: Det bruges til heltal og flydende nummer. Førende nuller bruges til at padde numrene i stedet for mellemrum.
    • Bredde: En valgfri * eller heltalsværdi, der bruges til at angive et minimumsbreddefelt.
    • Præcision: Et valgfrit felt bestående af en. efterfulgt af * eller heltal eller intet for at specificere præcisionen.
    • Længde: En valgfri længdemodifikator, der angiver størrelsen på argumentet.
    • Specifier: En konverteringsformatspecifikator. De tilgængelige formatspecifikatorer er som følger:
      Format Specifier Beskrivelse
      % Udskriver%
      c Skriver et enkelt tegn
      s Skriver en tegnstreng
      d eller i Konverterer et underskrevet heltal til decimalrepræsentation
      o Konverterer et usigneret heltal til oktal repræsentation
      X eller x Konverterer et usigneret heltal til hexadecimal repræsentation
      u Konverterer et usigneret heltal til decimalrepræsentation
      F eller f Konverterer flydende nummer til decimalrepræsentationen
      E eller e Konverterer flydende nummer til decimaleksponentnotationen
      A eller a Konverterer flydende nummer til den hexadecimale eksponent
      G eller g Konverterer flydende nummer til enten decimal- eller decimaleksponentnotation
      n Returnerer antallet af tegn, der hidtil er skrevet af dette opkald, til funktionen. Resultatet skrives til den værdi, som argumentet peger på
      s Skriver en implementeringsdefineret tegnsekvens, der definerer en markør.

      Så det generelle format for formatspecifikator er: %(flags)(width)(.precision)(length)specifier

  • vlist: En liste over argumenter, der indeholder de data, der skal skrives.

vfprintf () Returværdi

Hvis det lykkes, vfprintf()returnerer funktionen antallet af tegn, der er skrevet. Ved fejl returnerer den en negativ værdi.

Eksempel: Sådan fungerer vfprintf () -funktionen

 #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 kører programmet, skrives følgende til data.csv-filen:

 navn, alder John, 13 Harry, 41 Kim, 26 Yuan, 21 Laxmi, 32

Interessante artikler...