C ++: n fscanf () -toimintoa käytetään tietojen lukemiseen tiedostovirrasta.
fscanf () -prototyyppi
int fscanf (FILE * stream, const char * format,…);
fscanf()
Toiminto lukee datan tiedostovirrasta ja tallentaa arvot vastaaviin muuttujiin.
Se määritetään otsikkotiedostossa.
fscanf () -parametrit
stream
: Syötetiedostovirta, josta tiedot voidaan lukea.format
: Nollapätkän merkkijonon osoitin, joka määrittää, miten syötettä luetaan. Se koostuu muodon määrittelijöistä, jotka alkavat%.Formaatin merkkijonossa on seuraavat osat:
Non whitespace characters
paitsi%, joista kukin kuluttaa yhden identtisen merkin tulovirrasta. Se voi aiheuttaa funktion epäonnistumisen, jos virran seuraava merkki ei ole yhtä suuri.Whitespace character
: Kaikkia peräkkäisiä välilyöntejä käsitellään yhtenä tyhjänä merkkinä. Lisäksi ' n', ' t' ja '' pidetään samoina.Conversion specification
: Se noudattaa seuraavaa muotoa:- Alkuperäinen% merkki, joka määrittää alun
- Valinnainen * nimeltään tehtävää tukahduttava merkki. Jos tämä merkki on läsnä, fscanf () ei määritä tulosta mihinkään vastaanottavaan argumenttiin.
- Valinnainen positiivinen kokonaisluku, joka määrittää kentän enimmäisleveyden. Se määrittää merkkien enimmäismäärän, jonka fscanf () saa kuluttaa tehdessään nykyisen muunnosmäärityksen mukaisen muunnoksen.
- Valinnainen pituusmuunnin, joka määrittää vastaanottavan argumentin koon.
- Muunnosmuodon määrittelijä.
Formaatin määrittelijä Kuvaus % Vastaa kirjaimellista% c Yhdistää yhden merkin tai useita merkkejä. Jos leveys on määritetty, vastaa täsmälleen leveysmerkkejä. s Vastaavat peräkkäisiä muita kuin välilyöntejä. Jos leveys on määritelty, vastaa täsmälleen leveysmerkkejä tai kunnes ensimmäinen välilyönti löytyy. (aseta) Vastaa ei-tyhjää merkkijonoa annetusta merkistöstä. Jos on joukon alussa, kaikki merkit, joita ei ole asetettu, vastaavat toisiaan. d Vastaa desimaalilukua. i Vastaa kokonaislukua. o Vastaa allekirjoittamatonta oktaalilukua. X tai x Vastaa allekirjoittamatonta heksadesimaalilukua. u Vastaa allekirjoittamatonta desimaalilukua. A tai a, E tai e, F tai f, G tai g Vastaa liukuluvun lukua. n Palauttaa tähän mennessä luettujen merkkien lukumäärän. s Vastaa toteutuksen määrittelemää merkkijonoa, joka määrittää osoittimen.
%(*)(width)(length)specifier
- …: Muita lisäväitteitä tietojen vastaanottamiseksi. Ne esiintyvät järjestyksessä muodon määrittelijän mukaan.
fscanf () Palautusarvo
- Jos se onnistuu,
fscanf()
funktio palauttaa onnistuneesti määritettyjen vastaanottavien argumenttien määrän. - Jos vastaavuus epäonnistuu ennen kuin ensimmäinen vastaanottava argumentti on osoitettu, palauttaa nollan.
- Jos syötevika ilmenee ennen kuin ensimmäinen vastaanottava argumentti on osoitettu, EOF palautetaan.
Esimerkki: Kuinka fscanf () -toiminto toimii
#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; )
Kun suoritat ohjelmaa, mahdollinen tulos on:
Hei Tim, olet 31-vuotias