logo

Forskellen mellem printf() og scanf() i C

Introduktion:

Printf() og Scanf() er indbyggede biblioteksfunktioner i C-sprog, der udfører formateret input og formateret output funktioner. Disse funktioner er defineret og erklæret i stdio.h header-fil . Det 'f' i printf og scanf står for 'formateret' . Altså begge funktioner printf() og scanf() brug koder i en formatstreng til at angive, hvordan output- eller inputværdier skal formateres. Vi er nødt til at importere header-filen til brug printf() og scanf() :

 #include 

I denne artikel vil vi diskutere forskellen mellem printf() og scanf(), men før vi diskuterer forskellene, skal vi kende til printf() og scanf() med dens syntaks og eksempler.

Printf():

Det udskrifter alt imellem dobbelte anførselstegn med formatspecifikationer %c, %d,%f, osv., for at vise en værdi af en variabel eller en konstant og kan også have escape-sekvenstegn som f.eks , til ny linje, og vandret fane , henholdsvis.

gitterlayout

Syntaks:

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

Scanf():

Det giver os mulighed for at læse en eller flere værdier indtastet af brugeren via tastaturet på konsollen. Vi kan placere så mange format specifikationer så mange input vi ønsker med eller uden format.

Syntaks:

 scanf(%format_specifier, &pointer_to_variable); 

Formatspecifikationsstreng:

I den første parameter af printf og scanf , vi passerer formatstreng eller formatspecifikationsstreng , og vi angiver, hvilken type værdi brugeren skal indtaste.

Datatype Konvertering formatstreng
Heltal kort heltal %d eller % i
kort usigneret % i
længe underskrevet % ld
længe usigneret % lu
usigneret hexadecimal % x
usigneret oktal %O
Ægte flyde % f eller % g
dobbelt %lf
underskrevet karakter %c
usigneret char %c
snor %s

For eksempel hvis en bruger kommer ind tyve som input, som tyve er en decimal heltalsværdi , angiver vi alle decimaltalsværdierne i C ved at bruge %d formatspecifikation . Tilsvarende flydende værdier er specificeret vha %f .

Grundlæggende 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; } 

Produktion:

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

Forklaring:

I ovenstående program bruger vi scanf() at læse input fra konsollen og gemme dem i variabler a & b. Derefter udfører vi aritmetiske operationer som tilføjelse , subtraktion , og multiplikation og senere gemme resultaterne i tre nye variable (Sum, Sub, Mul). Endelig ved at bruge printf() funktion , vi udskriver resultaterne.

Eksempel 2:-

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

I ovenstående program, scanf() læser to input fra programmet, selvom vi sender én variabel, fordi vi har specificeret to formatspecifikationer . Husk altid, In scanf()/printf() alle format specifikationer at vi passerer burde være det samme, ellers kan vi få nogle uventede runtime fejl.

Eksempel 3:

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

Produktion:

 5 Execution finished... 

Forklaring:

kmp algoritme

I ovenstående program, scanf() læser kun ét input fra brugeren, fordi vi kun har specificeret en formatspecifikation . Så fra dette eksempel konkluderer vi, at ingen af ​​inputs vil blive taget afhængigt af antallet af format specifikationer .

Eksempel 4:

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

Produktion:

 6 Segmentation fault 

Forklaring:

I ovenstående program videregiver vi værdien af ​​en variabel til scanf() i stedet for den variable adresse. Det vil føre til en køretidsfejl . I Linux får vi en segmenteringsfejl.

sammenkæde java-streng

Eksempel 5:

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

Produktion:

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

Forklaring:

I ovenstående program, hvornår printf scanner formatstrengen, erstatter den formatspecifikationer (%d) med de faktiske værdier, som vi går videre til printf() . det vil sige, at den første formatspecifikation bliver erstattet af den første værdi, som vi sender ind printf(), og så videre.

Grundlæggende forskelle mellem Printf() og Scanf()

Få forskelle mellem printf og scanf er: -

    printf() funktion udsender data til standardudgangen, dvs. til konsollen. I modsætning hertil scanf() funktion læser data fra standardinput, dvs. inputenheder printf() bruger sjældent pointer i nogle få tilfælde, men scanf() bruger altid en markør til at tildele værdi til den givne variabel. printf() og scanf() begge har samme returtype heltal . Det printf() returnerer det antal tegn, den har udskrevet på konsollen, hvorimod scanf() vender tilbage 0,1 eller EOF baseret på den angivne formatspecifikation.