C ++ scanf - C ++ szabványos könyvtár

A scanf () függvény a C ++ - ban az adatok leolvasására szolgál a stdin-ből.

scanf () prototípus

 int scanf (const char * formátum,…);

A scanf()függvény beolvassa az adatokat, stdinés az értékeket a megfelelő változókba tárolja.

A fejlécfájlban van meghatározva.

scanf () Paraméterek

  • format: Egy nullával végződő karakterlánc mutatója, amely meghatározza a bemenet olvasásának módját. % -Al kezdődő formátum-specifikátorokból áll.

    A formátum karaktersorozat a következő részekkel rendelkezik:

    • Non whitespace characters% kivételével mindegyik egy azonos karaktert fogyaszt a bemeneti adatfolyamból. A funkció meghibásodását okozhatja, ha a folyam következő karaktere nem hasonlít egyenlőre.
    • Whitespace character: Az egymást követő fehér szóköz karaktereket egyetlen szóköz karakterként kezeli. Ezenkívül a ' n', ' t' és a '' azonosak.
    • Conversion specification: 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, a scanf () 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 a scanf () felhasználhat az aktuális konverziós specifikáció által meghatározott konverzió végrehajtása 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: %(*)(width)(length)specifier
  • …: További további érvek az adatok fogadásához. A formátummeghatározó szerint sorrendben fordulnak elő.

scanf () Visszatérési érték

  • Ha sikeres, a scanf()függvény visszaadja a sikeresen hozzárendelt fogadó argumentumok számát.
  • Ha az első fogadó argumentum hozzárendelése előtt egyezési hiba lép fel, akkor nullát ad vissza.
  • Ha az első vételi argumentum hozzárendelése előtt bemeneti hiba lép fel, akkor az EOF visszatér.

Példa: A scanf () függvény működése

 #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"); scanf(fp, "%s %d", name, &age); fclose(fp); printf("Hello %s, You are %d years old", name, age); return 0; )

A program futtatásakor egy lehetséges kimenet lesz:

 Hello Tim, 31 éves vagy

érdekes cikkek...