C ++: n sscanf () -funktiota käytetään tietojen lukemiseen merkkijonopuskurista.
sscanf () -prototyyppi
int sscanf (const char * puskuri, const char * muoto,…);
sscanf()
Toiminto lukee tiedot lukee datan puskuriin ja tallentaa arvot vastaaviin muuttujiin.
Se määritetään otsikkotiedostossa.
sscanf () -parametrit
buffer
: Nollapätkän merkkijonon osoitin tietojen lukemiseksi.format
: Nollapätkän merkkijonon osoitin, joka määrittää, miten syötettä luetaan. Se koostuu muodon määrittelijöistä, jotka alkavat%.Formaatin merkkijonossa on seuraavat osat:
Non whitespace characters
paitsi%, joista kukin kuluttaa yhden identtisen merkin tulovirrasta. Se voi aiheuttaa funktion epäonnistumisen, jos virran seuraava merkki ei ole yhtä suuri.Whitespace character
: Kaikkia peräkkäisiä välilyöntejä käsitellään yhtenä tyhjänä merkkinä. Lisäksi ' n', ' t' ja '' pidetään samoina.Conversion specification
: Se noudattaa seuraavaa muotoa:- Alkuperäinen% merkki, joka määrittää alun
- Valinnainen * nimeltään tehtävää tukahduttava merkki. Jos tämä merkki on läsnä, fscanf () ei määritä tulosta mihinkään vastaanottavaan argumenttiin.
- Valinnainen positiivinen kokonaisluku, joka määrittää kentän enimmäisleveyden. Se määrittää merkkien enimmäismäärän, jonka fscanf () saa kuluttaa tehdessään nykyisen muunnosmäärityksen mukaisen muunnoksen.
- Valinnainen pituusmuunnin, joka määrittää vastaanottavan argumentin koon.
- Muunnosmuodon määrittelijä.
Formaatin määrittelijä Kuvaus % Vastaa kirjaimellista% c Yhdistää yhden merkin tai useita merkkejä. Jos leveys on määritetty, vastaa täsmälleen leveysmerkkejä. s Vastaavat peräkkäisiä muita kuin välilyöntejä. Jos leveys on määritelty, vastaa täsmälleen leveysmerkkejä tai kunnes ensimmäinen välilyönti löytyy. (aseta) Vastaa ei-tyhjää merkkijonoa annetusta merkistöstä. Jos on joukon alussa, kaikki merkit, joita ei ole asetettu, vastaavat toisiaan. d Vastaa desimaalilukua. i Vastaa kokonaislukua. o Vastaa allekirjoittamatonta oktaalilukua. X tai x Vastaa allekirjoittamatonta heksadesimaalilukua. u Vastaa allekirjoittamatonta desimaalilukua. A tai a, E tai e, F tai f, G tai g Vastaa liukuluvun lukua. n Palauttaa tähän mennessä luettujen merkkien lukumäärän. s Vastaa toteutuksen määrittelemää merkkijonoa, joka määrittää osoittimen.
%(*)(width)(length)specifier
- …: Muita lisäväitteitä tietojen vastaanottamiseksi. Ne esiintyvät järjestyksessä muodon määrittelijän mukaan.
sscanf () Palautusarvo
- Jos se onnistuu,
sscanf()
funktio palauttaa onnistuneesti määritettyjen vastaanottavien argumenttien määrän. - Jos vastaavuus epäonnistuu ennen kuin ensimmäinen vastaanottava argumentti on osoitettu, palauttaa nollan.
- Jos syötevika ilmenee ennen kuin ensimmäinen vastaanottava argumentti on osoitettu, EOF palautetaan.
Esimerkki: Kuinka sscanf () -toiminto toimii
#include int main () ( char fname(50), lname(50); char buffer() = "Dennis Ritchie"; sscanf(buffer, "%s %s", fname, lname); printf("First name : %s Last name : %s", fname, lname); return 0; )
Kun suoritat ohjelmaa, mahdollinen tulos on:
Etunimi: Dennis Sukunimi: Ritchie