logo

Verschil tussen printf() en scanf() in C

Invoering:

Afdrukken() En Scanf() zijn ingebouwde bibliotheekfuncties in C-taal die presteren geformatteerde invoer En geformatteerde uitvoer functies. Deze functies worden gedefinieerd en gedeclareerd in stdio.h headerbestand . De 'F' in afdrukkenf En scannenf betekent 'geformatteerd' . Beide functies dus printf() En scanf() gebruik codes binnen een opmaaktekenreeks om op te geven hoe uitvoer- of invoerwaarden moeten worden opgemaakt. We moeten het headerbestand importeren om te gebruiken printf() En scanf() :

 #include 

In dit artikel zullen we het verschil tussen printf() en scanf() bespreken, maar voordat we de verschillen bespreken, moeten we iets weten over printf() en scanf() met zijn syntaxis en voorbeelden.

Afdrukkenf():

Het afdrukken alles tussen dubbele aanhalingstekens met formaatspecificaties %c, %d,%f, enz., om een ​​waarde van een variabele of een constante weer te geven en kan ook ontsnappingsreekstekens hebben zoals , voor nieuwe lijn, En horizontaal tabblad respectievelijk.

Java-kaart voorbeeld

Syntaxis:

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

Scanf():

Hiermee kunnen we een of meerdere waarden lezen die door de gebruiker zijn ingevoerd via het toetsenbord op de console. We kunnen er zoveel plaatsen formaatspecificaties zoveel invoer als we willen, met of zonder formaat.

Syntaxis:

 scanf(%format_specifier, &pointer_to_variable); 

Formaatspecificatiereeks:

In de eerste parameter van afdrukkenf En scannenf , we zijn door opmaakreeks of tekenreeks voor formaatspecificatie , en we specificeren welk type waarde de gebruiker gaat invoeren.

Data type Conversie opmaakreeks
Geheel getal Kort geheel getal %d of %i
kort niet ondertekend % in
lang ondertekend % ld
lang niet ondertekend % lu
hexadecimaal zonder teken % X
ongesigneerd octaal %O
Echt vlot % f of % g
dubbele %lf
ondertekend karakter %C
Ongetekend char %C
snaar %S

Bijvoorbeeld als een gebruiker binnenkomt twintig als invoer, als twintig is een decimale gehele waarde , specificeren we alle decimale gehele waarden in C met behulp van de %d formaatspecificatie . Op dezelfde manier, zwevende waarden worden gespecificeerd met behulp van %F .

Basiscode voor Printf() en Scanf():

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

Uitgang:

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

Uitleg:

In het bovenstaande programma gebruiken we de scanf() om de invoer van de console te lezen en deze in variabelen op te slaan a & b. Daarna voeren we rekenkundige bewerkingen uit zoals toevoeging , aftrekken , En vermenigvuldiging en sla de resultaten later op in het drie nieuwe variabelen (Sum, Sub, Mul). Tot slot, door gebruik te maken van de printf()-functie , we drukken de resultaten af.

Voorbeeld 2:-

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

In bovenstaand programma scanf() leest twee invoer uit het programma, ook al geven we één variabele door omdat we deze hebben opgegeven twee formaatspecificaties . Onthoud altijd: In scanf()/printf() al de formaatspecificaties die we doorgeven moet hetzelfde zijn, anders kunnen we onverwachte runtime-fouten krijgen.

Voorbeeld 3:

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

Uitgang:

dynamisch programmeren
 5 Execution finished... 

Uitleg:

In bovenstaand programma scanf() leest slechts één invoer van de gebruiker omdat we alleen hebben opgegeven één formaatspecificatie . Uit dit voorbeeld concluderen we dus dat geen van de invoergegevens wordt gebruikt, afhankelijk van het aantal formaatspecificaties .

Voorbeeld 4:

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

Uitgang:

 6 Segmentation fault 

Uitleg:

In het bovenstaande programma geven we de waarde van een variabele door scanf() in plaats van het variabele adres. Het zal leiden tot een runtime-fout . In Linux krijgen we een segmentatiefoutfout.

verschil tussen tijger en leeuw

Voorbeeld 5:

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

Uitgang:

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

Uitleg:

In het bovenstaande programma, wanneer afdrukkenf scant de formatstring, deze vervangt de formaatspecificaties (%d) met de werkelijke waarden waar we naar toe gaan printf() . dat wil zeggen dat de eerste formaatspecificatie wordt vervangen door de eerste waarde die we doorgeven printf(), enzovoort.

Basisverschillen tussen Printf() en Scanf()

Er zijn maar weinig verschillen tussen printf en scanf: -

    printf()-functie voert gegevens uit naar de standaarduitvoer, dat wil zeggen naar de console. Daarentegen is de scanf()-functie leest gegevens van de standaardinvoer, dat wil zeggen invoerapparaten printf() gebruikt zelden een aanwijzer in een paar gevallen, maar scanf() gebruikt altijd een pointer om waarde aan de gegeven variabele toe te wijzen. printf() En scanf() beide hebben hetzelfde retourtype geheel getal . De printf() retourneert het aantal tekens dat met succes op de console is afgedrukt, terwijl scanf() geeft terug 0,1 of EOF op basis van de opgegeven formaatspecificatie.