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: -