logo

Ero printf():n ja scanf():n välillä C:ssä

Esittely:

Tulostaf() ja Scanf() ovat sisäänrakennettuja C-kielen kirjastotoimintoja, jotka suorittavat muotoiltu syöttö ja muotoiltu tulos toimintoja. Nämä funktiot on määritelty ja ilmoitettu kohdassa stdio.h otsikkotiedosto . The 'f' sisään printf ja scanf tarkoittaa 'muotoiltu' . Molemmat toiminnot siis printf() ja scanf() käytä koodeja muotomerkkijonon sisällä määrittääksesi, kuinka lähtö- tai tuloarvot tulee muotoilla. Meidän on tuotava käytettävä otsikkotiedosto printf() ja scanf() :

 #include 

Tässä artikkelissa keskustelemme printf()- ja scanf()-eroista, mutta ennen kuin käsittelemme eroja, meidän on tiedettävä printf()- ja scanf()-funktioista sen syntaksin ja esimerkkien kanssa.

Tulostaf():

Se tulostaa mitään siltä väliltä kaksoislainausmerkit kanssa muotomääritykset %c, %d,%f, jne., näyttääksesi muuttujan tai vakion arvon, ja niissä voi olla myös pakomerkkejä, kuten , varten uusi rivi, ja vaakasuora välilehti , vastaavasti.

javafx opetusohjelma

Syntaksi:

 printf('(string) %format_specifier (string)',variable); 

Scanf():

Sen avulla voimme lukea yhden tai useita arvoja, jotka käyttäjä on syöttänyt konsolin näppäimistön kautta. Voimme sijoittaa niin monta muotomäärityksiä niin monta tuloa kuin haluamme muodossa tai ilman.

Syntaksi:

 scanf(%format_specifier, &pointer_to_variable); 

Muotomääritteen merkkijono:

Ensimmäisessä parametrissa printf ja scanf , ohitamme muotoinen merkkijono tai muotomääritteen merkkijono , ja määritämme, minkä tyyppisen arvon käyttäjä syöttää.

Tietotyyppi Muuntaminen muotoinen merkkijono
Kokonaisluku lyhyt kokonaisluku %d tai % i
lyhyt allekirjoittamaton % sisään
pitkään allekirjoitettu % ld
pitkään allekirjoittamaton % lu
etumerkitön heksadesimaali % x
allekirjoittamaton oktaali %O
Todellinen kellua % f tai % g
kaksinkertainen %lf
signeerattu hahmo %c
allekirjoittamaton merkki %c
merkkijono %s

Esimerkiksi jos käyttäjä tulee sisään kaksikymmentä syötteenä, as kaksikymmentä on desimaalilukuarvo , määritämme kaikki desimaalilukuarvot C:ssä käyttämällä %d muotomääritys . Samalla lailla, kelluvia arvoja määritetään käyttämällä %f .

Printf()- ja Scanf()-peruskoodi:

Esimerkki 1:

 #include int main() { int a, b; int sum = 0, sub = 0, mul = 0; printf('Please enter the two values:'); /* Read input */ scanf('%d%d', &a, &b); sum = a+b; sub = a-b; mul = a*b; /* Print output */ printf('The sum = %d 
sub = %d 
mul = %d', sum, sub, mul); return 0; } 

Lähtö:

 Please enter the two values:8 6 The sum = 14 sub = 2 mul = 48 

Selitys:

ero jään ja lumen välillä

Yllä olevassa ohjelmassa käytämme scanf() lukeaksesi syötteen konsolista ja tallentaaksesi ne muuttujiin a & b. Sen jälkeen suoritamme aritmeettisia operaatioita, kuten lisäys , vähennyslasku , ja kertolasku ja tallenna tulokset myöhemmin kolme uutta muuttujaa (Sum, Sub, Mul). Lopuksi käyttämällä printf()-funktio , tulostamme tuloksia.

Esimerkki 2:-

 #include int main() { int a; scanf('%d %d', &a); printf('Execution finished...'); return 0; } 

Yllä olevassa ohjelmassa scanf() lukee kaksi syötettä ohjelmasta, vaikka välitämme yhden muuttujan, koska määritimme kaksi muotomääritystä . Muista aina, In scanf()/printf() kaikki muotomäärityksiä jonka ohitamme, tulee olla sama, muuten saatamme saada odottamattomia ajonaikaisia ​​virheitä.

Esimerkki 3:

 int main() { int a, b; scanf('%d', &a, &b); printf('Execution finished...'); return 0; } 

Lähtö:

 5 Execution finished... 

Selitys:

Yllä olevassa ohjelmassa scanf() lukee vain yhden syötteen käyttäjältä, koska määritimme vain yksi muotomäärittäjä . Joten tästä esimerkistä päättelemme, että mitään syötteistä ei oteta riippuen niiden lukumäärästä muotomäärityksiä .

Esimerkki 4:

 #include int main() { int a; scanf('%d', a); printf('Execution finished'); } 

Lähtö:

 6 Segmentation fault 

Selitys:

Yllä olevassa ohjelmassa välitämme muuttujan arvon scanf() muuttuvan osoitteen sijaan. Se johtaa a suorituksenaikainen virhe . Linuxissa saamme segmentointivirheen.

verkkosivusto, kuten coomeet

Esimerkki 5:

 #include int main() { int a = 10; int b = 20; printf('the value of a = %d, the value of b = %d', a, b); } 

Lähtö:

 the value of a = 10, the value of b = 20 

Selitys:

Yllä olevassa ohjelmassa milloin printf skannaa muotomerkkijonon, se korvaa muotomääritykset (%d) todellisten arvojen kanssa, joihin siirrymme printf() . eli ensimmäinen muotomäärittäjä korvataan ensimmäisellä antamallamme arvolla printf(), ja niin edelleen.

Peruserot Printf()- ja Scanf()-funktioiden välillä

Muutamia eroja printf:n ja scanf:n välillä ovat: -

    printf()-funktio tulostaa tiedot vakiolähtöön, eli konsoliin. Sitä vastoin scanf()-funktio lukee dataa vakiosyötöstä eli syöttölaitteista printf() käyttää osoitinta harvoin joissakin tapauksissa, mutta scanf() käyttää aina osoitinta antaakseen arvon annetulle muuttujalle. printf() ja scanf() molemmilla on sama palautustyyppi kokonaisluku . The printf() palauttaa konsoliin tulostettujen merkkien määrän, kun taas scanf() palaa 0,1 tai EOF annetun muotomääritteen perusteella.