logo

Razlika između printf() i scanf() u C-u

Uvod:

Printf() i Scanf() su ugrađene funkcije knjižnice u C jeziku koje izvode formatirani unos i formatirani izlaz funkcije. Ove funkcije su definirane i deklarirane u stdio.h datoteka zaglavlja . The 'f' u printf i skenirati stoji za 'formatirano' . Dakle, obje funkcije printf() i scanf() koristite kodove unutar niza formata da odredite kako izlazne ili ulazne vrijednosti trebaju biti formatirane. Moramo uvesti datoteku zaglavlja za korištenje printf() i scanf() :

 #include 

U ovom ćemo članku raspravljati o razlici između printf() i scanf(), ali prije rasprave o razlikama, moramo znati o printf() i scanf() s njihovom sintaksom i primjerima.

Printf():

To ispisuje bilo što između dvostruki navodnici s specifikatori formata %c, %d,%f, itd., za prikaz vrijednosti varijable ili konstante i također može imati znakove izlazne sekvence poput , za nova linija, i horizontalni jezičak , odnosno.

ključ kandidata

Sintaksa:

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

Scanf():

Omogućuje nam čitanje jedne ili više vrijednosti koje je korisnik unio putem tipkovnice na konzoli. Možemo postaviti koliko god ih ima specifikatori formata onoliko unosa koje želimo sa ili bez formata.

Sintaksa:

 scanf(%format_specifier, &pointer_to_variable); 

Niz specifikacije formata:

U prvom parametru od printf i skenirati , prolazimo formatni niz ili string specifikacije formata , a mi navodimo koju će vrstu vrijednosti korisnik unijeti.

Tip podataka Pretvorba formatni niz
Cijeli broj kratki cijeli broj %d ili % i
kratki nepotpisani % u
odavno potpisan % ld
dugo nepotpisano % Lu
heksadecimalni bez predznaka % x
oktalni bez predznaka %O
Stvaran plutati % f ili % g
dvostruko %lf
potpisani znak %c
unsigned char %c
niz %s

Na primjer, ako korisnik unese dvadeset kao unos, kao dvadeset je decimalna cjelobrojna vrijednost , specificiramo sve decimalne vrijednosti cijelog broja u C pomoću %d specifikator formata . Slično tome, float vrijednosti navedeni su pomoću %f .

java lambda primjer

Osnovni kod za Printf() i Scanf():

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

Izlaz:

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

Obrazloženje:

U gornjem programu koristimo scanf() za čitanje ulaza s konzole i njihovo pohranjivanje u varijable a & b. Nakon toga izvodimo aritmetičke operacije kao dodatak , oduzimanje , i množenje a kasnije pohraniti rezultate u tri nove varijable (Sum, Sub, Mul). Konačno, korištenjem funkcija printf(). , ispisujemo rezultate.

Primjer 2:-

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

U gornjem programu, scanf() čita dva ulaza iz programa iako prosljeđujemo jednu varijablu jer smo naveli dva specifikatora formata . Uvijek zapamti, In scanf()/printf() svi specifikatori formata koje prosljeđujemo trebale bi biti iste, inače možemo dobiti neke neočekivane pogreške tijekom izvođenja.

Primjer 3:

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

Izlaz:

 5 Execution finished... 

Obrazloženje:

U gornjem programu, scanf() čita samo jedan unos od korisnika jer smo naveli samo jedan specifikator formata . Dakle, iz ovog primjera zaključujemo da nijedan od ulaza neće biti uzet ovisno o broju specifikatori formata .

Primjer 4:

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

Izlaz:

 6 Segmentation fault 

Obrazloženje:

U gornjem programu prosljeđujemo vrijednost varijable u scanf() umjesto adrese varijable. To će dovesti do a pogreška u vremenu izvođenja . U Linuxu ćemo dobiti grešku segmentacije.

države u SAD-u

Primjer 5:

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

Izlaz:

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

Obrazloženje:

U gornjem programu, kada printf skenira niz formata, zamijenit će specifikatori formata (%d) sa stvarnim vrijednostima do kojih prelazimo printf() . tj. prvi specifikator formata bit će zamijenjen prvom vrijednošću koju proslijedimo printf(), i tako dalje.

Osnovne razlike između Printf() i Scanf()

Nekoliko razlika između printf i scanf su: -

    funkcija printf(). ispisuje podatke na standardni izlaz, tj. na konzolu. Nasuprot tome, funkcija scanf(). čita podatke sa standardnog ulaza, odnosno ulaznih uređaja printf() rijetko koristi pokazivač u nekoliko slučajeva, ali scanf() uvijek koristi pokazivač za dodjelu vrijednosti zadanoj varijabli. printf() i scanf() oba imaju isti povratni tip cijeli broj . The printf() vraća broj znakova koje je uspješno ispisao na konzoli, dok scanf() vraća 0,1 ili EOF na temelju navedenog specifikatora formata.