A vfscanf () függvény a C ++ fájlban az adatok olvasására szolgál egy fájlfolyamból.
A vfscanf () függvény a fejlécfájlban van meghatározva.
vfscanf () prototípus
int vfscanf (FÁJL * adatfolyam, const char * formátum, va_list vlist);
A vfscanf () függvény beolvassa az adatokat a fájlfolyamból, és az értékeket a vlist által meghatározott megfelelő helyekre tárolja.
vfscanf () Paraméterek
- adatfolyam: Adatfolyam beírása az adatok olvasására.
- formátum: Mutató egy nullával végződő karakterláncra, amely meghatározza a bemenet olvasásának módját. % -Al kezdődő formátum-specifikátorokból áll.
- vlist: Változó argumentumlista, ahol az értékeket tárolni kell.
A formátum karakterlánc a következő részekkel rendelkezik:- Nem fehér szóköz karakterek, kivéve%, amelyek mindegyike egyforma karaktert emészt fel a bemeneti adatfolyamból. A funkció meghibásodását okozhatja, ha a folyam következő karaktere nem hasonlít egyenlőre.
- Fehér szóköz: Az egymást követő fehér szóköz karaktereket egyetlen szóköz karakterként kezeljük. Ezenkívül a ' n', ' t' és a '' azonosak.
- Konverzió specifikáció: 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, akkor az vfscanf () 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. Megadja a maximális karakterszámot, amelyet az vfscanf () használhat az aktuális konverziós specifikáció által meghatározott átalakítás során.
- 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.
Tehát a formátummeghatározó általános formátuma:% (*) (szélesség) (hossz) specifikátor
- vlist: A bemenetek fogadásához szükséges argumentumok listája.
vfscanf () Visszatérési érték
- Sikeres esetben a vfscanf () függvény visszaadja a sikeresen elolvasott argumentumok számát.
- Meghibásodás esetén az EOF visszatér.
Példa: Hogyan működik az vfscanf () függvény?
#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; )
A program futtatásakor egy lehetséges kimenet lesz:
Itt van a barátaim listája Robert Syd Brian Eddie Ray