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: -