Funktionen fscanf () i C ++ bruges til at læse dataene fra filstrømmen.
fscanf () prototype
int fscanf (FILE * stream, const char * format,…);
Den fscanf()
aflæser data fra filen stream og gemmer værdierne i de respektive variabler.
Det er defineret i header-fil.
fscanf () Parametre
stream
: En inputfilstrøm til at læse dataene fra.format
: Markør til en null-termineret tegnstreng, der specificerer, hvordan input skal læses. Den består af formatspecifikationer, der starter med%.Formatstrengen har følgende dele:
Non whitespace characters
undtagen%, som hver bruger et identisk tegn fra inputstrømmen. Det kan få funktionen til at mislykkes, hvis det næste tegn på streamen ikke sammenligner det samme.Whitespace character
: Alle de på hinanden følgende mellemrumstegn behandles som et enkelt mellemrumstegn. Yderligere betragtes ' n', ' t' og '' som de samme.Conversion specification
: Det følger følgende format:- Indledende% tegn, der angiver begyndelsen
- En valgfri * kaldet tildelingsundertrykkende karakter. Hvis dette tegn er til stede, tildeler fscanf () ikke resultatet til noget modtagende argument.
- Et valgfrit positivt heltal, der angiver den maksimale feltbredde. Det specificerer det maksimale antal tegn, som fscanf () har tilladelse til at forbruge, når den konvertering er specificeret af den aktuelle konverteringsspecifikation.
- En valgfri længdemodifikator, der angiver størrelsen på det modtagende argument.
- En konverteringsformat specificerer.
Format Specifier Beskrivelse % Matcher den bogstavelige% c Matcher et enkelt tegn eller flere tegn. Hvis bredde er defineret, matcher den nøjagtigt bredde. s Matcher på hinanden følgende ikke-mellemrumstegn. Hvis bredde er defineret, matcher den nøjagtigt bredde tegn, eller indtil første hvide mellemrum er fundet. (sæt) Matcher en ikke-tom række af tegn fra det givne sæt tegn. Hvis er til stede i begyndelsen af sættet, matches alle de tegn, der ikke er i sættet. d Matcher et decimaltal. jeg Matcher et heltal. o Matcher et usigneret oktalt heltal. X eller x Matcher et usigneret hexadecimalt heltal. u Matcher et usigneret decimaltal. A eller a, E eller e, F eller f, G eller g Matcher et flydende nummer. n Returnerer antallet af læste tegn indtil videre. s Matcher en implementeringsdefineret tegnsekvens, der definerer en markør.
%(*)(width)(length)specifier
- …: Andre yderligere argumenter for modtagelse af data. De forekommer i en sekvens i henhold til formatspecifikatoren.
fscanf () Returværdi
- Hvis det lykkes,
fscanf()
returnerer funktionen antallet af modtagende argumenter, der er tildelt med succes. - Hvis en matchende fejl opstår, før det første modtagelsesargument blev tildelt, returnerer nul.
- Hvis inputfejl opstår, før det første modtagelsesargument blev tildelt, returneres EOF.
Eksempel: Sådan fungerer fscanf () -funktionen
#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; )
Når du kører programmet, vil en mulig output være:
Hej Tim, du er 31 år gammel