logo

Atšķirība starp printf () un scanf () valodā C

Ievads:

Printf() un Scanf() ir iebūvētas bibliotēkas funkcijas C valodā, kas veic formatēta ievade un formatēta izvade funkcijas. Šīs funkcijas ir definētas un deklarētas stdio.h galvenes failu . The 'f' iekšā printf un scanf apzīmē 'formatēts' . Tātad, abas funkcijas printf() un scanf() izmantojiet kodus formāta virknē, lai norādītu, kā formatēt izvades vai ievades vērtības. Lai izmantotu, mums ir jāimportē galvenes fails printf() un scanf() :

 #include 

Šajā rakstā mēs apspriedīsim atšķirību starp printf () un scanf (), taču pirms atšķirību apspriešanas mums ir jāzina par printf () un scanf () ar tā sintaksi un piemēriem.

Printf():

Tas izdrukas jebko starp dubultpēdiņas ar formāta specifikācijas %c, %d,%f, utt., lai parādītu mainīgā vai konstantes vērtību, un tajā var būt arī atsoļa secības rakstzīmes, piemēram, , priekš jauna līnija, un horizontālā cilne , attiecīgi.

Būla valoda c

Sintakse:

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

Scanf():

Tas ļauj mums nolasīt vienu vai vairākas vērtības, ko lietotājs ievadījis, izmantojot konsoles tastatūru. Mēs varam ievietot tik daudz formāta specifikācijas tik daudz ievades, kādu mēs vēlamies ar formātu vai bez tā.

Sintakse:

 scanf(%format_specifier, &pointer_to_variable); 

Formāta norādītāja virkne:

Pirmajā parametrā printf un scanf , ejam garām formāta virkne vai formāta specifikācijas virkne , un mēs norādām, kāda veida vērtību lietotājs gatavojas ievadīt.

Datu tips Pārvēršana formāta virkne
Vesels skaitlis īss vesels skaitlis %d vai % i
īss neparakstīts % in
sen parakstīts % ld
sen neparakstīts % lu
neparakstīts heksadecimāls % x
neparakstīts astoņnieks %O
Īsta peldēt % f vai % g
dubultā %lf
parakstīts raksturs %c
neparakstīts raksts %c
virkne %s

Piemēram, ja lietotājs ieiet divdesmit kā ievade, kā divdesmit ir vesela decimālskaitļa vērtība , mēs norādām visas decimāldaļas veselo skaitļu vērtības C, izmantojot %d formāta norādītājs . Līdzīgi, peldošās vērtības ir norādīti, izmantojot %f .

Printf() un Scanf() pamatkods:

1. piemērs:

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

Izvade:

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

Paskaidrojums:

izlīdziniet attēlu ar css

Iepriekš minētajā programmā mēs izmantojam scanf() lai nolasītu ievadi no konsoles un saglabātu tos mainīgajos a un b. Pēc tam mēs veicam aritmētiskās darbības, piemēram papildinājums , atņemšana , un reizināšana un vēlāk saglabājiet rezultātus mapē trīs jauni mainīgie (Sum, Sub, Mul). Visbeidzot, izmantojot printf() funkcija , mēs drukājam rezultātus.

2. piemērs:-

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

Iepriekš minētajā programmā scanf() nolasa divas programmas ievades, lai gan mēs nododam vienu mainīgo, jo mēs norādījām divi formāta norādītāji . Vienmēr atceries, In scanf()/printf() visi formāta specifikācijas izturētajam jābūt vienādam, pretējā gadījumā mēs varam iegūt dažas neparedzētas izpildlaika kļūdas.

3. piemērs:

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

Izvade:

 5 Execution finished... 

Paskaidrojums:

Iepriekš minētajā programmā scanf() nolasa tikai vienu lietotāja ievadi, jo mēs norādījām tikai viens formāta norādītājs . Tātad no šī piemēra mēs secinām, ka neviens no ievades datiem netiks ņemts atkarībā no skaita formāta specifikācijas .

4. piemērs:

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

Izvade:

 6 Segmentation fault 

Paskaidrojums:

Iepriekš minētajā programmā mēs nododam mainīgā vērtību uz scanf() mainīgās adreses vietā. Tas novedīs pie a izpildes laika kļūda . Operētājsistēmā Linux tiks parādīta segmentācijas kļūdas kļūda.

boto3

5. piemērs:

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

Izvade:

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

Paskaidrojums:

Iepriekš minētajā programmā, kad printf skenē formāta virkni, tā aizstās formāta specifikācijas (%d) ar faktiskajām vērtībām, kurām mēs pārejam printf() . t.i., pirmais formāta norādītājs tiks aizstāts ar pirmo ievadīto vērtību printf (), un tā tālāk.

Galvenās atšķirības starp Printf () un Scanf ()

Dažas atšķirības starp printf un scanf ir: -

    printf() funkcija izvada datus uz standarta izvadi, t.i., uz konsoli. Turpretim, Scanf() funkcija nolasa datus no standarta ievades, t.i., ievadierīcēm printf() dažos gadījumos reti izmanto rādītāju, bet scanf() vienmēr izmanto rādītāju, lai piešķirtu vērtību dotajam mainīgajam. printf() un scanf() abiem ir vienāds atgriešanas veids vesels skaitlis . The printf() atgriež konsolē veiksmīgi izdrukāto rakstzīmju skaitu, savukārt scanf() atgriežas 0,1 vai EOF pamatojoties uz sniegto formāta norādītāju.