Avainero – scanf vs gets
Funktio on joukko lauseita tietyn tehtävän suorittamiseksi. Ilman kaikkia lausekkeita samaan ohjelmaan, se voidaan jakaa useisiin funktioihin. Ohjelmoinnissa käyttäjä voi määritellä itse omat toiminnonsa. On myös ohjelmointikielten toimittamia toimintoja. C-kieli tarjoaa useita toimintoja, joten ohjelmoija voi käyttää niitä suoraan toteuttamatta niitä alusta alkaen. Kaksi tällaista C-kielen tarjoamaa toimintoa ovat scanf ja gets. Tässä artikkelissa käsitellään näiden kahden toiminnon eroa. Keskeinen ero scanf:n ja getsin välillä on, että scanf lopettaa syötteen kohdatessaan välilyönnin, rivinvaihdon tai tiedoston lopun (EOF), kun taas gets pitää välilyönnin osana syöttömerkkijonoa ja lopettaa syötteen kohtaaessaan rivinvaihdon tai EOF:n.
Mikä on scanf?
Scanf-toiminto voi lukea syötettä näppäimistöltä ja tallentaa ne annetun muotomääritteen mukaan. Se lukee syötteen kunnes kohtaa välilyönnin, rivinvaihdon tai EOF:n. Syntaksi on seuraava.
scanf("muotomerkkijono", muuttujien osoiteluettelo);
Katso alla oleva esimerkki ymmärtääksesi scanf.
Kuva 01: skannaus yhdellä tulolla
Edellä olevan ohjelman mukaan näppäimistöltä saatava syöte on kokonaisluku, joten muotomääritteenä on %d. Jos se saa merkkiarvon, muodon määrittäjä on %c. Jos saadaan liukulukuarvo, muodon määrittäjä on %f. Vastaanotettu syötearvo tulee tallentaa numeromuuttujaan. Siksi muuttujan numeron osoite välitetään scanf-funktioon. Nyt numeromuuttuja sisältää käyttäjän näppäimistöltä antaman arvon. Lopuksi voimme tulostaa numeromuuttujan tarkistaaksemme arvon.
Voit myös vastaanottaa useamman kuin yhden arvon kerrallaan.
Kuva 02: skannaus useilla tuloilla
Vastaanotetut tulot tallennetaan muuttujiin numero1 ja numero2. Arvot voidaan tarkistaa komennolla printf.
Mitä saa?
gets-toimintoa käytetään syötteiden vastaanottamiseen näppäimistöltä rivinvaihdon tai EOF:n kohtaamiseen. Välilyöntiä pidetään osana syötettä. Gets-funktion syntaksi on seuraava.
gets("mihin merkkijono tallennetaan");
Jos merkkijonoa vastaanotettaessa tapahtuu virhe, gets-funktio palauttaa nolla-arvon.
Katso alla oleva esimerkki,
Kuva 03: saa
Gets-funktio vastaanottaa syötteen ja tallentaa sen muuttujaan word1. Jos ohjelmoija käytti komentoa scanf gets ja syöttää merkkijonon, kuten "hello world" sijaan, scanf lukee merkkijonon kahtena merkkijonona välilyönnin vuoksi. Mutta gets lukee sen yhtenä merkkijonona "hello world".
Mitä yhtäläisyyksiä skannauksen ja saamisen välillä on?
- Molemmat ovat C-ohjelmointikielen toimittamia toimintoja.
- Molempien tulee sisältää otsikkotiedosto stdio.h, jotta näitä toimintoja voidaan käyttää.
- Molempia voidaan käyttää syötteen saamiseksi vakiotulosta.
Mitä eroa scanf:n ja gettien välillä on?
scanf vs gets |
|
scanf on C-funktio, joka lukee syötteen vakiosyötteestä, kunnes kohtaa välilyönnin, rivinvaihdon tai EOF:n. | gets on C-funktio, joka lukee syötteen vakiosyötteestä rivinvaihdon tai EOF:n kohtaamiseen. Se pitää välilyöntejä osana syötettä. |
Syntaksi | |
scanf-toiminto ottaa muotomerkkijonon ja muuttujien osoiteluettelon. esim. scanf("%d", &numero); | gets-funktio ottaa muuttujan nimen tallentaakseen vastaanotetun arvon. Esim. gets(name); |
Joustavuus | |
scanf voi lukea useita arvoja eri tietotyypeistä. | gets() saa vain merkkijonotiedot. |
Yhteenveto – scanf vs gets
scanf ja gets ovat ohjelmointikielen C toimittamia toimintoja. Käyttäjän ei tarvitse toteuttaa näitä toimintoja alusta alkaen. He voivat käyttää niitä suoraan ohjelmissaan. Ero scanf:n ja getsin välillä on se, että scanf lopettaa syöttämisen kohtaaessaan välilyönnin, rivinvaihdon tai tiedoston lopun (EOF) ja gets pitää välilyönnin osana syöttömerkkijonoa ja lopettaa syötteen kohtaaessaan rivinvaihdon tai EOF:n. Scanf:n tai getsin käyttö riippuu tavasta vastaanottaa käyttäjän syöte vakiosyötteestä, joka on useimmiten näppäimistö. scanf on joustavampi kuin gets.
Lataa PDF-versio sovelluksesta scanf vs gets
Voit ladata tämän artikkelin PDF-version ja käyttää sitä offline-tarkoituksiin lainaushuomautuksen mukaisesti. Lataa PDF-versio tästä Ero scanf:n ja gets:n välillä