A C ++ fájlban található fscanf () függvény segítségével az adatok leolvashatók a fájlfolyamról.
fscanf () prototípus
int fscanf (FÁJL * adatfolyam, const char * formátum,…);
A fscanf()
függvény beolvassa az adatokat a fájlfolyamból, és az értékeket a megfelelő változókba tárolja.
A fejlécfájlban van meghatározva.
fscanf () Paraméterek
stream
: Egy bemeneti fájlfolyam, ahonnan leolvashatja az adatokat.format
: Egy nullával végződő karakterlánc mutatója, amely meghatározza a bemenet olvasásának módját. % -Al kezdődő formátum-specifikátorokból áll.A formátum karaktersorozat a következő részekkel rendelkezik:
Non whitespace characters
% kivételével mindegyik egy azonos karaktert fogyaszt a bemeneti adatfolyamból. A funkció meghibásodását okozhatja, ha a folyam következő karaktere nem hasonlít egyenlőre.Whitespace character
: Az egymást követő fehér szóköz karaktereket egyetlen szóköz karakterként kezeli. Ezenkívül a ' n', ' t' és a '' azonosak.Conversion specification
: A következő formátumot követi:- Kezdő% karakter, amely meghatározza a kezdetet
- Opcionális * nevű hozzárendelést elnyomó karakter. Ha ez a karakter jelen van, az fscanf () nem hozzárendeli az eredményt egyetlen fogadó argumentumhoz sem.
- Opcionális pozitív egész szám, amely meghatározza a mező maximális szélességét. Meghatározza az fscanf () által az aktuális konverziós specifikációban megadott átalakítás során elfogyasztható karakterek maximális számát.
- Opcionális hosszúság-módosító, amely meghatározza a fogadó argumentum méretét.
- Konverziós formátum-specifikátor.
Formátummeghatározó Leírás % Megfelel a szó szerinti% -nak c Egy vagy több karaktert illeszt. Ha a szélesség van megadva, akkor pontosan megegyezik a szélességű karakterekkel. s Megfelel az egymást követő nem fehér szóköz karaktereknek. Ha a szélesség van megadva, akkor pontosan megegyezik a szélességű karakterekkel, vagy addig, amíg az első szóköz nem található. (készlet) A megadott karakterkészlet nem üres karaktersorozata. Ha a halmaz elején van ^, akkor a halmazban nem szereplő összes karakter egyezik. d Tizedes egész számot illeszt. én Megfelel egy egész számnak. o Egyezik az előjel nélküli oktális egész számmal. X vagy x Egyezik az aláíratlan hexadecimális egész számmal. u Egyezik az aláíratlan tizedes egész számmal. A vagy a, E vagy e, F vagy f, G vagy g Megfelel egy lebegőpontos számnak. n Visszaadja az eddig elolvasott karakterek számát. o Megfelel egy megvalósítás által definiált karakterláncnak, amely meghatároz egy mutatót.
%(*)(width)(length)specifier
- …: További további érvek az adatok fogadásához. A formátummeghatározó szerint sorrendben fordulnak elő.
fscanf () Visszatérési érték
- Ha sikeres, a
fscanf()
függvény visszaadja a sikeresen hozzárendelt fogadó argumentumok számát. - Ha az első fogadó argumentum hozzárendelése előtt egyezési hiba lép fel, akkor nullát ad vissza.
- Ha az első vételi argumentum hozzárendelése előtt bemeneti hiba lép fel, akkor az EOF visszatér.
Példa: Az fscanf () függvény működése
#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; )
A program futtatásakor egy lehetséges kimenet lesz:
Hello Tim, 31 éves vagy