C ++ vfprintf () - C ++ standartinė biblioteka

Funkcija vfprintf () C ++ naudojama norint suformatuotą eilutę įrašyti į failų srautą.

vfprintf () prototipas

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

vfprintf()Funkcija rašo eilutę pažymėjo, kad pagal formatą į failą upelio srove. Stygos formate gali būti formato specifikatoriai, prasidedantys%, kurie yra pakeisti kintamųjų, perduotų kaip sąrašo vlist, vertėmis.

Tai apibrėžta antraštės faile.

vfprintf () parametrai

  • srautas: išvesties failų srautas rezultatui parašyti.
  • formatas: Neleistos eilutės, kuri įrašoma į failų srautą, žymeklis. Ją sudaro simboliai ir pasirenkami formato specifikatoriai, prasidedantys%.

    Formato specifikatoriai pakeičiami atitinkamų kintamųjų reikšmėmis, kurios seka formato eilutę.

    Formato specifikatoriuje yra šios dalys:

    • Pirmaujantis% ženklas
    • Žymos: pasirinktinai viena ar kelios žymos, modifikuojančios konversijos elgseną.
      • -: kairė pateisina rezultatą lauke. Pagal nutylėjimą tai yra teisinga.
      • +: Rezultato ženklas pridedamas prie vertės pradžios, net jei teigiami rezultatai.
      • Erdvė: jei nėra ženklo, rezultato pradžioje pridedama tarpas.
      • #: Atliekama alternatyvi konversijos forma.
      • 0: Jis naudojamas sveikam skaičiui ir slankiojo kablelio skaičiui. Skaičių užpildymui vietoj tarpo naudojami priekiniai nuliai.
    • Plotis: neprivaloma * arba sveiko skaičiaus vertė, naudojama nurodyti minimalaus pločio lauką.
    • Tikslumas: neprivalomas laukas, kurį sudaro a. po kurio * arba sveikas skaičius arba nieko, kad būtų galima nurodyti tikslumą.
    • Ilgis: pasirinktinis ilgio modifikatorius, nurodantis argumento dydį.
    • Specifikatorius: konversijos formato specifikatorius. Galimi formatų parametrai yra šie:
      Formato specifikatorius apibūdinimas
      % Spausdina%
      c Rašo vieną veikėją
      s Rašo simbolių eilutę
      d arba aš Konvertuoja pasirašytą sveikąjį skaičių į dešimtainį vaizdą
      o Konvertuoja nepasirašytą sveikąjį skaičių į aštuonetinį vaizdą
      X arba x Konvertuoja nepasirašytą sveikąjį skaičių į šešioliktainį vaizdą
      u Konvertuoja nepasirašytą sveikąjį skaičių į dešimtainį vaizdą
      F arba f Konvertuoja slankiojo kablelio skaičių dešimtainiu skaičiumi
      E arba e Konvertuoja slankiojo kablelio skaičių dešimtainio laipsnio rodikliu
      A arba a Konvertuoja slankiojo kablelio skaičių į šešioliktainį rodiklį
      G arba g Konvertuoja slankiojo kablelio skaičių dešimtainiu arba dešimtainiu laipsnių rodikliu
      n Grąžina iki šiol šiuo skambučiu parašytų simbolių skaičių funkcijai. Rezultatas įrašomas į argumento nurodytą vertę
      p Rašo įgyvendinimo apibrėžtą simbolių seką, apibrėžiančią žymeklį.

      Taigi bendras formato specifikatoriaus formatas yra: %(flags)(width)(.precision)(length)specifier

  • vlist: argumentų, kuriuose yra duomenys, kuriuos reikia parašyti, sąrašas.

vfprintf () Grąžinimo vertė

Jei pavyks, vfprintf()funkcija grąžins parašytų simbolių skaičių. Sugedus ji grąžina neigiamą vertę.

Pavyzdys: Kaip veikia 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; )

Paleidus programą, į failą data.csv bus įrašyta:

 vardas, amžius Jonas, 13 Harry, 41 Kim, 26 Yuanas, 21 Laxmi, 32

Įdomios straipsniai...