logo

Razlika med printf() in scanf() v C

Uvod:

Printf() in Scanf() so vgrajene knjižnične funkcije v jeziku C, ki izvajajo formatiran vnos in formatiran izhod funkcije. Te funkcije so definirane in deklarirane v datoteka glave stdio.h . The 'f' v printf in scanf pomeni 'formatirano' . Torej, obe funkciji printf() in scanf() uporabite kode v formatnem nizu, da določite, kako naj bodo izhodne ali vhodne vrednosti oblikovane. Za uporabo moramo uvoziti datoteko glave printf() in scanf() :

 #include 

V tem članku bomo razpravljali o razlikah med printf() in scanf(), vendar preden razpravljamo o razlikah, moramo vedeti o printf() in scanf() z njuno sintakso in primeri.

Printf():

To odtisi karkoli vmes dvojni narekovaji z specifikatorji formata %c, %d,%f, itd., za prikaz vrednosti spremenljivke ali konstante in ima lahko tudi znake ubežnega zaporedja, kot je , za nova vrstica, in vodoravni zavihek , oz.

java bubble sort

Sintaksa:

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

Scanf():

Omogoča nam branje ene ali več vrednosti, ki jih uporabnik vnese s tipkovnico na konzoli. Postavimo jih lahko poljubno specifikatorji formata kolikor želimo vnosov z ali brez formata.

Sintaksa:

 scanf(%format_specifier, &pointer_to_variable); 

Niz za določitev oblike:

V prvem parametru printf in scanf , mimo formatni niz oz niz določevalca formata , in določimo, katero vrsto vrednosti bo uporabnik vnesel.

Vrsta podatkov Pretvorba formatni niz
Celo število kratko celo število %d ali % i
kratko nepodpisano % v
dolgo podpisano % ld
dolgo nepodpisano % lu
nepredznačeno šestnajstiško % x
osmiško brez predznaka %O
Resnično lebdi % f ali % g
dvojno %lf
podpisani znak %c
nepredpisan znak %c
vrvica %s

Na primer, če uporabnik vstopi dvajset kot vložek, kot dvajset je decimalna cela vrednost , podamo vse vrednosti decimalnih celih števil v C z uporabo %d specifikator formata . Podobno, plavajoče vrednosti so določeni z uporabo %f .

Osnovna koda za Printf() in Scanf():

Primer 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; } 

Izhod:

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

Pojasnilo:

V zgornjem programu uporabljamo scanf() za branje vnosa s konzole in njihovo shranjevanje v spremenljivke a & b. Po tem izvajamo aritmetične operacije, kot je dodatek , odštevanje , in množenje in pozneje shranite rezultate v tri nove spremenljivke (Sum, Sub, Mul). Končno z uporabo funkcijo printf(). , rezultate izpisujemo.

Primer 2:-

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

V zgornjem programu je scanf() prebere dva vhoda iz programa, čeprav posredujemo eno spremenljivko, ker smo podali dva specifikatorja formata . Vedno si zapomni, In scanf()/printf() vse specifikatorji formata ki jih posredujemo, mora biti enak, sicer lahko dobimo nekaj nepričakovanih napak med izvajanjem.

java ubežni znak

Primer 3:

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

Izhod:

 5 Execution finished... 

Pojasnilo:

V zgornjem programu je scanf() prebere samo en vnos uporabnika, ker smo podali samo en specifikator formata . Iz tega primera torej sklepamo, da noben od vnosov ne bo upoštevan glede na število specifikatorji formata .

Primer 4:

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

Izhod:

 6 Segmentation fault 

Pojasnilo:

V zgornjem programu posredujemo vrednost spremenljivke scanf() namesto spremenljivega naslova. To bo vodilo do a napaka med izvajanjem . V Linuxu bomo prejeli napako napake segmentacije.

java vizualizator

Primer 5:

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

Izhod:

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

Pojasnilo:

V zgornjem programu, ko printf skenira formatni niz, bo zamenjal specifikatorji oblike (%d) z dejanskimi vrednostmi, na katere prehajamo printf() . prvi specifikator formata bo zamenjan s prvo vrednostjo, ki jo posredujemo printf(), in tako naprej.

Osnovne razlike med Printf() in Scanf()

Nekaj ​​razlik med printf in scanf je: -

    funkcijo printf(). izpiše podatke na standardni izhod, tj. na konzolo. V nasprotju s tem je funkcijo scanf(). bere podatke iz standardnega vhoda, tj printf() redko uporablja kazalec v nekaj primerih, vendar scanf() vedno uporablja kazalec za dodelitev vrednosti dani spremenljivki. printf() in scanf() oba imata isto vrnjeno vrsto celo število . The printf() vrne število znakov, ki jih je uspešno natisnil na konzoli, medtem ko scanf() vrača 0,1 ali EOF glede na podani specifikator formata.