Funcția vfwscanf () din C ++ este utilizată pentru a citi șiruri de caractere largi dintr-un flux de fișiere.
Funcția vfwscanf () este definită în fișierul antet.
prototip vfwscanf ()
int vfwscanf (FILE * stream, const wchar_t * format, va_list vlist);
Funcția vfwscanf () citește datele din fluxul de flux de fișiere și stochează valorile în locațiile respective definite de vlist.
vfwscanf () Parametri
- stream: introduceți fluxul de fișiere pentru a citi datele din.
- format: Pointer către un șir larg de caractere cu terminare nulă, care specifică modul de citire a intrării. Se compune din specificatori de format care încep cu%.
Șirul de format are următoarele părți:- Caracterele care nu sunt spații albe, cu excepția% din care fiecare consumă un caracter identic din fluxul de intrare. Poate provoca eșecul funcției dacă următorul caracter din flux nu compară egal.
- Caracterul spațiului alb: Toate caracterele spațiului alb consecutiv sunt tratate ca un singur caracter spațiu alb. Mai mult, ' n', ' t' și '' sunt considerate aceleași.
- Specificații de conversie: urmează următorul format:
- % Caracter inițial care specifică începutul
- Un caracter opțional * numit caracter de suprimare a atribuirilor. Dacă acest caracter este prezent, vfwscanf () nu atribuie rezultatul niciunui argument de primire.
- Un număr întreg pozitiv opțional care specifică lățimea maximă a câmpului. Specifică numărul maxim de caractere pe care vfwscanf () i se permite să le consume atunci când efectuează conversia specificată de specificația curentă de conversie.
- Un modificator opțional de lungime care specifică dimensiunea argumentului de primire.
- Un specificator de format de conversie.
Specificator de format Descriere % Se potrivește cu% literal c Potriveste un singur caracter sau mai multe caractere. Dacă lățimea este definită, se potrivește exact cu caractere de lățime. s Potrivește caractere consecutive fără spațiu alb. Dacă lățimea este definită, se potrivește exact cu lățimea caracterelor sau până când se găsește primul spațiu alb. (a stabilit) Potrivește o secvență de caractere ne goală din setul de caractere dat. Dacă este prezent la începutul setului, atunci toate caracterele care nu sunt în set sunt potrivite. d Se potrivește cu un număr întreg zecimal. eu Se potrivește cu un număr întreg. o Se potrivește cu un întreg octal nesemnat. X sau x Se potrivește cu un număr întreg hexazecimal nesemnat. tu Se potrivește cu un număr zecimal nesemnat. A sau a, E sau e, F sau f, G sau g Se potrivește cu un număr în virgulă mobilă. n Returnează numărul de caractere citite până acum. p Se potrivește cu o secvență de caractere definită de implementare care definește un pointer.
Deci, formatul general al specificatorului de format este:% (*) (lățime) (lungime) specificator
- vlist: o listă de argumente pentru primirea intrărilor.
vfwscanf () Valoare returnată
- Dacă are succes, funcția vfwscanf () returnează numărul de argumente citite cu succes.
- La eșec, EOF este returnat.
Exemplu: Cum funcționează funcția vfwscanf ()?
#include #include #include #include void read( FILE *fp, const wchar_t* format,… ) ( va_list args; va_start (args, format); vfwscanf (fp, format, args); va_end (args); ) int main () ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t symbol() = L"u0915u0916u0917u0918u0919"; wchar_t names(5)(5) = (L"Ka", L"Kha", L"Ga", L"Gha", L"Nga"); FILE *fp = fopen("example.txt","w+"); for (int i=0; i<5; i++) fwprintf(fp, L"%lc %ls ", symbol(i), names(i)); rewind(fp); wchar_t ch, str(5); for (int i=0; i<5; i++) ( read(fp, L"%lc %ls ", &ch, str); wprintf(L"%lc - %ls", ch, str); ) fclose(fp); return 0; )
Când rulați programul, o posibilă ieșire va fi:
क - Ka ख - Kha ग - Ga घ - Gha ङ - Nga