logo

Skirtumas tarp printf () ir scanf () C

Įvadas:

Printf() ir Scanf() yra integruotos bibliotekos funkcijos C kalba, kurios atlieka suformatuota įvestis ir suformatuota išvestis funkcijas. Šios funkcijos yra apibrėžtos ir deklaruotos stdio.h antraštės failą . The 'f' in printf ir scanf reiškia 'suformatuotas' . Taigi, abi funkcijos printf() ir scanf() naudokite kodus formato eilutėje, kad nurodytumėte, kaip turi būti formatuojamos išvesties arba įvesties reikšmės. Norėdami naudoti, turime importuoti antraštės failą printf() ir scanf() :

 #include 

Šiame straipsnyje aptarsime skirtumą tarp printf () ir scanf (), tačiau prieš aptardami skirtumus, turime žinoti apie printf () ir scanf () su jo sintaksė ir pavyzdžiais.

Printf():

Tai spaudiniai bet kas tarp dvigubos kabutės su formato specifikacijos %c, %d,%f, ir tt, kad būtų rodoma kintamojo arba konstantos reikšmė, taip pat gali būti pabėgimo sekos simbolių, pvz , dėl nauja linija, ir horizontalus skirtukas , atitinkamai.

pakeiskite eilutę Java

Sintaksė:

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

Scanf():

Tai leidžia mums nuskaityti vieną ar kelias reikšmes, kurias vartotojas įvedė per pulto klaviatūrą. Galime įdėti tiek pat formato specifikacijos tiek įvesčių, kiek norime su formatu arba be jo.

Sintaksė:

 scanf(%format_specifier, &pointer_to_variable); 

Formato specifikacijos eilutė:

Pirmajame parametre printf ir scanf , praeiname formato eilutė arba formato specifikacijos eilutė , ir nurodome, kokio tipo reikšmę vartotojas ketina įvesti.

Duomenų tipas Konversija formato eilutė
Sveikasis skaičius trumpas sveikasis skaičius %d arba % i
trumpas nepasirašytas % in
seniai pasirašytas % ld
seniai nepasirašytas % lu
nepasirašytas šešioliktainis % x
nepasirašytas aštuntasis %O
Tikras plūdė % f arba % g
dvigubai %lf
pasirašytas personažas %c
nepasirašytas char %c
styga %s

Pavyzdžiui, jei vartotojas įeina dvidešimt kaip įvestis, kaip dvidešimt yra dešimtainė sveikojo skaičiaus reikšmė , mes nurodome visas dešimtaines sveikųjų skaičių reikšmes C, naudodami %d formato specifikacija . Panašiai, plaukiojančios vertės yra nurodyti naudojant %f .

Pagrindinis Printf() ir Scanf() kodas:

1 pavyzdys:

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

Išvestis:

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

Paaiškinimas:

Aukščiau pateiktoje programoje mes naudojame scanf() nuskaityti įvestį iš konsolės ir išsaugoti juos kintamuosiuose a ir b. Po to atliekame aritmetines operacijas kaip papildymas , atimti , ir daugyba ir vėliau išsaugokite rezultatus trys nauji kintamieji (Sum, Sub, Mul). Galiausiai, naudojant printf() funkcija , spausdiname rezultatus.

aštrus kampas

2 pavyzdys:-

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

Aukščiau pateiktoje programoje scanf() nuskaito du programos įvestis, nors perduodame vieną kintamąjį, nes nurodėme du formato parametrai . Visada atsimink, In scanf()/printf() Visi formato specifikacijos turi būti tas pats, kitaip galime gauti netikėtų vykdymo klaidų.

3 pavyzdys:

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

Išvestis:

 5 Execution finished... 

Paaiškinimas:

Aukščiau pateiktoje programoje scanf() skaito tik vieną vartotojo įvestį, nes nurodėme tik vienas formato specifikatorius . Taigi iš šio pavyzdžio darome išvadą, kad nė viena įvestis nebus paimta, atsižvelgiant į skaičių formato specifikacijos .

4 pavyzdys:

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

Išvestis:

 6 Segmentation fault 

Paaiškinimas:

Aukščiau pateiktoje programoje kintamojo reikšmę perduodame į scanf() vietoj kintamojo adreso. Tai sukels a Klaida . Linux sistemoje gausime segmentavimo klaidą.

java pupelė

5 pavyzdys:

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

Išvestis:

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

Paaiškinimas:

Aukščiau pateiktoje programoje, kada printf nuskaito formato eilutę, ji pakeis formato specifikacijos (%d) su tikrosiomis vertybėmis, į kurias pereiname printf() . y., pirmoji formato specifikacija bus pakeista pirmąja reikšme, kurią perduodame printf (), ir taip toliau.

Pagrindiniai skirtumai tarp Printf() ir Scanf()

Keletas skirtumų tarp printf ir scanf yra šie:

    printf() funkcija išveda duomenis į standartinę išvestį, t.y. į konsolę. Priešingai, Scanf() funkcija nuskaito duomenis iš standartinio įvesties, t.y. įvesties įrenginių printf() retai naudoja rodyklę keliais atvejais, bet scanf() visada naudoja rodyklę, kad priskirtų vertę nurodytam kintamajam. printf() ir scanf() abu turi tą patį grąžinimo tipą sveikasis skaičius . The printf() grąžina simbolių skaičių, kurį sėkmingai išspausdino konsolėje, tuo tarpu scanf() grįžta 0,1 arba EOF pagal pateiktą formato specifikaciją.