logo

Forskjellen mellom printf() og scanf() i C

Introduksjon:

Printf() og Scanf() er innebygde bibliotekfunksjoner i C-språk som utfører formatert inngang og formatert utgang funksjoner. Disse funksjonene er definert og deklarert i stdio.h header-fil . De 'f' i printf og scanf står for 'formatert' . Altså begge funksjonene printf() og scanf() bruk koder i en formatstreng for å spesifisere hvordan utdata- eller inngangsverdier skal formateres. Vi må importere overskriftsfilen som skal brukes printf() og scanf() :

 #include 

I denne artikkelen vil vi diskutere forskjellen mellom printf() og scanf(), men før vi diskuterer forskjellene, må vi vite om printf() og scanf() med dens syntaks og eksempler.

Printf():

Den utskrifter alt mellom doble anførselstegn med formatspesifikasjoner %c, %d,%f, osv., for å vise en verdi av en variabel eller en konstant og kan også ha escape-sekvenstegn som , til ny linje, og horisontal fane , henholdsvis.

java mens tilstand

Syntaks:

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

Scanf():

Den lar oss lese en eller flere verdier som er lagt inn av brukeren via tastaturet på konsollen. Vi kan plassere så mange formatspesifikasjoner så mange innganger vi ønsker med eller uten format.

Syntaks:

 scanf(%format_specifier, &pointer_to_variable); 

Formatspesifikasjonsstreng:

I den første parameteren til printf og scanf , vi passerer formatstreng eller formatspesifikasjonsstreng , og vi spesifiserer hvilken type verdi brukeren skal angi.

Data-type Omdannelse formatstreng
Heltall kort heltall %d eller % i
kort usignert % i
lenge signert % ld
lenge usignert % lu
usignert heksadesimal % x
usignert oktal %O
Ekte flyte % f eller % g
dobbelt %lf
signert karakter %c
usignert røye %c
streng %s

For eksempel hvis en bruker kommer inn tjue som input, som tjue er en desimal heltallsverdi , spesifiserer vi alle desimalverdiene i C ved å bruke %d formatspesifikasjoner . På samme måte, flyteverdier er spesifisert ved hjelp av %f .

Grunnleggende kode for Printf() og Scanf():

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

Produksjon:

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

Forklaring:

I programmet ovenfor bruker vi scanf() for å lese inndataene fra konsollen og lagre dem i variabler a & b. Etter det utfører vi aritmetiske operasjoner som addisjon , subtraksjon , og multiplikasjon og senere lagre resultatene i tre nye variabler (Sum, Sub, Mul). Til slutt, ved å bruke printf() funksjon , vi skriver ut resultatene.

Eksempel 2:-

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

I programmet ovenfor, scanf() leser to innganger fra programmet selv om vi sender en variabel fordi vi spesifiserte to formatspesifikasjoner . Husk alltid, In scanf()/printf() alle formatspesifikasjoner at vi passerer bør være det samme, ellers kan vi få noen uventede kjøretidsfeil.

Eksempel 3:

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

Produksjon:

 5 Execution finished... 

Forklaring:

ny linje i python

I programmet ovenfor, scanf() leser kun ett input fra brukeren fordi vi kun spesifiserte én formatspesifikasjoner . Så fra dette eksemplet konkluderer vi med at ingen av inngangene vil bli tatt avhengig av antall formatspesifikasjoner .

Eksempel 4:

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

Produksjon:

 6 Segmentation fault 

Forklaring:

I programmet ovenfor sender vi verdien av en variabel til scanf() i stedet for den variable adressen. Det vil føre til en kjøretidsfeil . I Linux vil vi få en segmenteringsfeilfeil.

cpp er lik

Eksempel 5:

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

Produksjon:

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

Forklaring:

I programmet ovenfor, når printf skanner formatstrengen, vil den erstatte formatspesifikasjoner (%d) med de faktiske verdiene som vi overfører til printf() . dvs. den første formatspesifikasjonen vil bli erstattet av den første verdien vi sender inn printf(), og så videre.

Grunnleggende forskjeller mellom Printf() og Scanf()

Noen få forskjeller mellom printf og scanf er: -

    printf() funksjon sender ut data til standardutgangen, dvs. til konsollen. I motsetning til dette scanf() funksjon leser data fra standardinndata, dvs. inndataenheter printf() bruker sjelden peker i noen få tilfeller, men scanf() bruker alltid en peker for å tilordne verdi til den gitte variabelen. printf() og scanf() begge har samme returtype heltall . De printf() returnerer antall tegn den har skrevet ut på konsollen, mens scanf() returnerer 0,1 eller EOF basert på formatspesifikasjonen som er oppgitt.