C ++ vfscanf () - C ++ standardraamatukogu

Funktsiooni vfscanf () kaustas C ++ kasutatakse failivoo andmete lugemiseks.

Funktsioon vfscanf () on määratletud päisefailis.

vfscanf () prototüüp

 int vfscanf (FILE * voog, const char * formaat, va_list vlist);

Funktsioon vfscanf () loeb failivoo andmeid ja salvestab väärtused vastavatesse asukohtadesse, nagu vlist määratleb.

vfscanf () parameetrid

  • voog: sisendfailivoog andmete lugemiseks.
  • formaat: nulliga lõpetatud tähemärgi kursor, mis määrab, kuidas sisendit lugeda. See koosneb vorminguspetsifikaatoritest algusega%.
  • vlist: Muutujate argumentide loend, kuhu väärtused salvestatakse
    . Formaadistringil on järgmised osad:
    • Muud tühimärgid, välja arvatud%, millest igaüks kulutab sisendvoost ühte identset tähemärki. See võib põhjustada funktsiooni nurjumise, kui voo järgmine märk ei võrdu võrdsega.
    • Tühimärk: kõiki järjestikuseid tühimärke käsitletakse ühe tühimärgina. Edasi loetakse tähti ' n', ' t' ja '' samaks.
    • Teisenduse spetsifikatsioon: see järgib järgmist vormingut:
      • Algne% märk, mis määrab alguse
      • Valikuline *, mida nimetatakse määramist summutavaks tähemärgiks. Kui see märk on olemas, ei määra vfscanf () tulemust ühelegi vastuvõtuargumendile.
      • Valikuline positiivne täisarv, mis määrab välja maksimaalse laiuse. See määrab maksimaalse märkide arvu, mida vfscanf () võib praeguse teisendusspetsifikatsiooniga määratud teisenduse tegemisel tarbida.
      • Valikuline pikkuse muutja, mis määrab vastuvõtu argumendi suuruse.
      • Teisendusvormingu täpsustaja.
    Vorminguspetsifikaatorid
    Vorminguspetsifikaator Kirjeldus
    % Sobib sõna otseses mõttes%
    c Sobib ühe või mitme tähemärgiga. Kui laius on määratletud, sobib see täpselt laiuse tähemärkidega.
    s Sobib järjestikuste tühimärkidega. Kui laius on määratletud, vastab see täpselt laiuse tähemärgile või kuni leitakse esimene tühik.
    (komplekt) Sobib antud tähemärkide komplekti mittetühja jada. Kui hulga alguses on ^, siis sobitatakse kõik tähemärgid, mida pole komplektis.
    d Sobib kümnendarvuni.
    i Sobib täisarvuga.
    o Sobib allkirjastamata kaheksandarvuga.
    X või x Sobib allkirjastamata kuueteistkümnendsüsteemi täisarvuga.
    u Sobib allkirjastamata kümnendarvuga.
    A või a, E või e, F või f, G või g Sobib ujukomaarvuga.
    n Tagastab seni loetud märkide arvu.
    lk Vastab rakenduse määratletud märgijärjestusele, mis määrab kursori.

    Seega on vorminguspetsifikaatori üldine vorming:
     % (*) (laius) (pikkus) täpsustaja
  • vlist: Sisendite vastuvõtmise argumentide loend.

vfscanf () Tagastusväärtus

  • Kui see õnnestub, tagastab funktsioon vfscanf () edukalt loetud argumentide arvu.
  • Rikke korral tagastatakse EOF.

Näide: Kuidas funktsioon vfscanf () töötab?

 #include #include void read(FILE* fp, const char * format,… ) ( va_list args; va_start (args, format); vfscanf (fp, format, args); va_end (args); ) int main () ( char myFriends(5)(20) = ("Robert", "Syd", "Brian", "Eddie", "Ray"); FILE *fp = fopen("example.txt","w+"); char name(20); for (int i=0; i<5; i++) fprintf(fp, "%s ", myFriends(i)); rewind(fp); printf("Here are the list of my friends"); for (int i=0; i<5; i++) ( read(fp, "%s ", &name); printf("%s", name); ) fclose(fp); return 0; )

Programmi käivitamisel on võimalik väljund:

 Siin on minu sõprade nimekiri Robert Syd Brian Eddie Ray

Huvitavad Artiklid...