C ++ fscanf () - C ++ Standardbibliotek

Funksjonen fscanf () i C ++ brukes til å lese dataene fra filstrømmen.

fscanf () prototype

 int fscanf (FIL * stream, const char * format,…);

Den fscanf()funksjon leser dataene fra filstrøm og lagrer verdiene i de respektive variablene.

Det er definert i topptekstfilen.

fscanf () Parametere

  • stream: En inngangsfilstrøm å lese dataene fra.
  • format: Peker til en null-avsluttet tegnstreng som spesifiserer hvordan du skal lese inngangen. Den består av formatspesifikatorer som begynner med%.

    Formatstrengen har følgende deler:

    • Non whitespace charactersunntatt% som hver bruker ett identisk tegn fra inngangsstrømmen. Det kan føre til at funksjonen mislykkes hvis neste tegn på strømmen ikke sammenligner like.
    • Whitespace character: Alle påfølgende tegn i mellomrom behandles som enkelt tegn i mellomrom. Videre anses ' n', ' t' og '' som de samme.
    • Conversion specification: Den følger følgende format:
      • Innledende% tegn som spesifiserer begynnelsen
      • En valgfri * kalt oppdragsdempende karakter. Hvis dette tegnet er tilstede, tildeler fscanf () ikke resultatet til noe mottaksargument.
      • Et valgfritt positivt heltall som spesifiserer maksimal feltbredde. Den spesifiserer det maksimale antall tegn som fscanf () har lov til å konsumere når konverteringen er spesifisert av gjeldende konverteringsspesifikasjon.
      • En valgfri lengdemodifikator som angir størrelsen på mottaksargumentet.
      • En konverteringsformatspesifikator.
        Format Spesifikator Beskrivelse
        % Matcher bokstavelig%
        c Matcher et enkelt tegn eller flere tegn. Hvis bredde er definert, samsvarer den nøyaktig med tegn i bredden.
        s Matcher påfølgende ikke-mellomromstegn. Hvis bredde er definert, samsvarer den nøyaktig med tegn i bredden eller til første hvite mellomrom er funnet.
        (sett) Matcher en ikke-tom sekvens av tegn fra det gitte settet med tegn. Hvis er tilstede i begynnelsen av settet, samsvarer alle tegnene som ikke er i settet.
        d Matcher et desimaltall.
        Jeg Matcher et heltall.
        o Matcher et usignert oktalt heltall.
        X eller x Matcher et usignert heksadesimalt heltall.
        u Matcher et usignert desimaltall.
        A eller a, E eller e, F eller f, G eller g Matcher et flytende nummer.
        n Returnerer antall tegn som er lest hittil.
        s Matcher en implementeringsdefinert tegnsekvens som definerer en peker.
    Så det generelle formatet til formatspesifikatoren er: %(*)(width)(length)specifier
  • …: Andre tilleggsargumenter for mottak av data. De forekommer i en sekvens i henhold til formatet.

fscanf () Returverdi

  • Hvis vellykket, fscanf()returnerer funksjonen antall mottaksargumenter som er tilordnet.
  • Hvis en samsvarende feil oppstår før det første mottaksargumentet ble tildelt, returnerer null.
  • Hvis inngangsfeil oppstår før det første mottaksargumentet ble tildelt, returneres EOF.

Eksempel: Hvordan funksjonen fscanf () fungerer

 #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 kjører programmet, vil en mulig utgang være:

 Hei Tim, du er 31 år gammel

Interessante artikler...