Scanf ja fgets

Anonim

Scanf vs fgets

Scanf ja fgets ovat kahta yleisesti käytettyä toimintamuotoa C-ohjelmoinnissa ja jotka ovat toisinaan toteutuneet muilla ohjelmointikielillä. Scanf viittaa Skannausformaatteihin. Scanf keskittyy voimassa olevien rahakkeiden syötteeseen ja se jäsentää ne määritellyn muodon mukaan. Keskittymällä niiden toteutumiseroihin ja niiden hallussa pitämiin koodeihin auttaa koko prosessin kokonaisvaltaisessa toteuttamisessa, on hyvä tapa saada selville näiden kahden väliset erot. Fgets on toisaalta C-kirjaston toiminto, joka on levinnyt alusta lähtien käytettäväksi muissa kirjastoissa.

Fgetsin käyttöä ei kannata nykyaikaiseen ohjelmointiin, sillä se on jätetty C89- ja C99-standardeihin, jotka mahdollistavat taaksepäin yhteensopivuuden. Tästä huolimatta fgetsin käyttö on erittäin tarkoituksenmukaista, jotta kokonaistulokset olisivat koodit, joita voidaan käyttää. Sen vuoksi ohjelmoija, joka käyttää fgetsia, on oltava tietoinen riittävän puskuriin tarvittavan merkkien lukumäärän ylärajasta. Tämä on vaikea haaste, eikä tietoja ole aiemmin tiedetty. Tästä mallista muodostuu portti, joka mahdollistaa tietoturvallisuuden hyödyntämisen puskurin ylivuodon tapauksessa. Edellä mainituista syistä mops-uuteen ohjelmaan ei suositella fgetsin käyttöä.

Scanf-funktio palauttaa kaikki käytettävissä olevat kohteet. On tärkeää huomata, että ei ole koko ajan niin, että saat saman määrän kohteita pyydettäessä. Kohteet voivat olla pienempiä kuin pyydetyt. Jos virtaa käytetään loppuun, annetaan EOF-virhe. Tämä sama skenaario näkyy myös, kun lukeminen epäonnistuu ennen kuin kaikki kohteet vastaavat. Scanf-funktio palauttaa sitten menestyksekkäästi onnistuneiden kohteiden kokonaismäärän, joka voi olla pienempi kuin pyydetyn numeron määrä.

Toinen ero hattu näkyy fgets ja scanf sisältää mahdollisuuden fgets lukea tietyn tiedoston, jos se on auki. Scanf lukee vain vakiotuloista, ei tiedostoista. On myös tärkeää huomata, että fgets vain lukee tietyn tekstin rungon tietyssä vaiheessa tiedostosta. Scanf voi toisaalta lukea tekstiä yhdellä rivillä kerrallaan, mutta se mahdollistaa myös käsittelytulokset numeerisiin tyyppeihin, jotka tulevat merkkijonoista. Fgetsia käytetään useimmiten tietyn tietolinkin lukemiseen, kun taas scanf käytetään tiedon jakamiseen.

Toinen asia, joka tulee esiin erona on, että scanf ei tee rajoja tarkkailemalla, kun taas fgets tarjoaa paremman valinnan, joka voi mahdollistaa arvioinnin tekemisen. Scanf: tä voidaan käyttää arvioimaan rajat sen jälkeen, kun fgets on tarkistanut ne.

Toinen tärkeä asia on huomata, että scanf etsii tietyn mallin argumentti määritetyn tietyn mallin. Tätä syötettä kutsutaan stdiniksi. Tässä tapauksessa annettu syöttö voi olla merkkijono, riippuen käytetystä variantista. Fgets toisaalta lukee nimenomaisesti rivin tiedostosta ja kopioi sen puskurin tulostimeen. Yleensä voidaan sanoa, että scanf: llä ei ole minkäänlaisia ​​rajoituksia, joiden tietty määrä merkkejä voidaan lukea oletusarvoisesti. Fgetsilla on korkeintaan lukemattomat merkit.

Yhteenveto

Scanf viittaa Skannausformaatteihin. Scanf keskittyy voimassa olevien rahakkeiden syöttöön. Scanf analysoi syötteet määrätyn muodon mukaan. Fgets on C: n funktio. Scanf lukee vain vakiotuloista. Fgets lukee vain tekstiriviä tietyssä ajassa tiedostosta. Scanf ei suorita rajojen tarkistamista.