Funktsiooni fscanf () failis C ++ kasutatakse andmete voogude lugemiseks.
fscanf () prototüüp
int fscanf (FILE * voog, const char * formaat,…);
fscanf()
Funktsioon loeb andmeid file stream ja salvestab väärtused vastavate muutujate.
See on määratletud päisefailis.
fscanf () parameetrid
stream
: Sisendfailivoog andmete lugemiseks.format
: Nullotsaga tähemärgi kursor, mis määrab sisendi lugemise. See koosneb vorminguspetsifikaatoritest algusega%.Formaadistringil on järgmised osad:
Non whitespace characters
välja arvatud%, millest igaüks kasutab sisendvoos ühte identset märki. See võib põhjustada funktsiooni nurjumise, kui voo järgmine märk ei võrdu võrdsega.Whitespace character
: Kõiki järjestikusi tühimärke käsitletakse ühe tühimärkidena. Edasi loetakse tähti ' n', ' t' ja '' samaks.Conversion specification
: See on järgmises vormingus:- 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 fscanf () tulemust ühelegi vastuvõtuargumendile.
- Valikuline positiivne täisarv, mis määrab välja maksimaalse laiuse. See määrab maksimaalse tähemärkide arvu, mida fscanf () võib kasutada praeguse teisendusspetsifikatsiooniga määratud teisenduse tegemisel.
- Valikuline pikkuse muutja, mis määrab vastuvõtu argumendi suuruse.
- Teisendusvormingu täpsustaja.
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.
%(*)(width)(length)specifier
- …: Muud täiendavad argumendid andmete vastuvõtmiseks. Need esinevad järjestuses vastavalt vorminguspetsifikaatorile.
fscanf () Tagastusväärtus
- Kui see õnnestub,
fscanf()
tagastab funktsioon edukalt määratud vastuvõetavate argumentide arvu. - Kui sobitamise tõrge ilmneb enne esimese vastuvõtuargumendi määramist, tagastab ta nulli.
- Kui sisenditõrge ilmneb enne esimese vastuvõtuargumendi määramist, tagastatakse EOF.
Näide: Kuidas funktsioon fscanf () töötab
#include int main () ( FILE *fp; char name(50); int age; fp = fopen("example.txt","w"); fprintf(fp, "%s %d", "Tim", 31); fclose(fp); fp = fopen("example.txt","r"); fscanf(fp, "%s %d", name, &age); fclose(fp); printf("Hello %s, You are %d years old", name, age); return 0; )
Programmi käivitamisel on võimalik väljund:
Tere, Tim, sa oled 31-aastane