Funkcija vfscanf () u C ++ koristi se za čitanje podataka iz toka datoteka.
Funkcija vfscanf () definirana je u datoteci zaglavlja.
prototip vfscanf ()
int vfscanf (FILE * stream, const char * format, va_list vlist);
Funkcija vfscanf () čita podatke iz toka protoka datoteka i pohranjuje vrijednosti na odgovarajuća mjesta kako ih definira vlist.
vfscanf () parametri
- stream: Unesite tok datoteke iz kojeg ćete čitati podatke.
- format: pokazivač na niz znakova završenih nulom koji specificira način čitanja unosa. Sastoji se od specifikatora formata koji počinju s%.
- vlist: Popis promjenjivih argumenata na kojem se vrijednosti trebaju pohraniti
Niz formata ima sljedeće dijelove:- Znakovi koji nisu razmaci, osim% koji svaki troši po jedan identičan znak iz ulaznog toka. To može uzrokovati neuspjeh funkcije ako se sljedeći znak u streamu ne usporedi.
- Razmak: Znakovi razmaka uzastopno tretiraju se kao jedan razmak. Nadalje, ' n', ' t' i '' smatraju se istim.
- Specifikacija pretvorbe: Slijedi sljedeći format:
- Inicijalni% znak koji specificira početak
- Izborni * koji se naziva znak za suzbijanje dodjele. Ako je prisutan ovaj znak, vfscanf () ne dodjeljuje rezultat niti jednom argumentu primanja.
- Izborni pozitivni cijeli broj koji specificira maksimalnu širinu polja. Određuje maksimalan broj znakova koje vfscanf () smije potrošiti kada vrši pretvorbu navedenu u trenutnoj specifikaciji pretvorbe.
- Izborni modifikator duljine koji specificira veličinu argumenta koji prima.
- Specifikator formata pretvorbe.
Specifikator formata Opis % Podudara se s doslovnim% c Podudara se s jednim znakom ili više znakova. Ako je širina definirana, točno se podudara sa znakovima širine. s Podudara se s uzastopnim znakovima koji nisu razmaci. Ako je širina definirana, točno se podudara sa znakovima širine ili dok se ne pronađe prvi razmak. (postavljeno) Podudara se s praznim nizom znakova iz zadanog skupa znakova. Ako je prisutan na početku skupa, tada se podudaraju svi znakovi koji nisu u skupu. d Podudara se s decimalnim cijelim brojem. ja Podudara se s cijelim brojem. o Podudara se s nepotpisanim osminski cijelim brojem. X ili x Podudara se s nepotpisanim heksadecimalnim cijelim brojem. u Podudara se s nepotpisanim decimalnim cijelim brojem. A ili a, E ili e, F ili f, G ili g Podudara se s brojem s pomičnom zarezom. n Vraća broj do sada pročitanih znakova. str Podudara se s implementacijom definiranim slijedom znakova koji definira pokazivač.
Dakle, općeniti format specifikatora formata je:Specifikator% (*) (width) (length)
- vlist: Popis argumenata za primanje ulaza.
vfscanf () Povratna vrijednost
- Ako je uspješna, funkcija vfscanf () vraća broj uspješno pročitanih argumenata.
- U slučaju neuspjeha, vraća se EOF.
Primjer: Kako funkcionira vfscanf () funkcija?
#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; )
Kada pokrenete program, mogući izlaz bit će:
Ovdje je popis mojih prijatelja Robert Syd Brian Eddie Ray