logo

Diferența dintre printf() și scanf() în C

Introducere:

Printf() și Scanf() sunt funcții de bibliotecă încorporate în limbajul C care efectuează intrare formatată și ieșire formatată funcții. Aceste funcții sunt definite și declarate în fișier antet stdio.h . The 'f' în printf și scanf reprezintă 'formatat' . Deci, ambele funcții printf() și scanf() utilizați coduri dintr-un șir de format pentru a specifica modul în care valorile de ieșire sau de intrare ar trebui formatate. Trebuie să importăm fișierul antet pentru a-l folosi printf() și scanf() :

 #include 

În acest articol, vom discuta despre diferența dintre printf() și scanf(), dar înainte de a discuta diferențele, trebuie să știm despre printf() și scanf() cu sintaxa și exemplele sale.

Printf():

Aceasta imprimeuri orice între ghilimele duble cu specificatori de format %c, %d,%f, etc., pentru a afișa o valoare a unei variabile sau a unei constante și poate avea, de asemenea, caractere de secvență de escape, cum ar fi , pentru linie nouă, și filă orizontală , respectiv.

prinde și încearcă java

Sintaxă:

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

Scanf():

Ne permite să citim una sau mai multe valori introduse de utilizator prin tastatura de la consolă. Putem plasa cât mai multe specificatorii de format câte intrări vrem cu sau fără format.

Sintaxă:

 scanf(%format_specifier, &pointer_to_variable); 

Șir de specificator de format:

În primul parametru al printf și scanf , trecem șir de format sau șir de specificator de format , și specificăm ce tip de valoare va introduce utilizatorul.

Tip de date Conversie șir de format
Întreg întreg scurt %d sau % i
scurt nesemnat % în
semnat de mult % ld
mult timp nesemnat % lu
hexazecimal nesemnat % X
octal nesemnat %O
Real pluti % f sau % g
dubla %lf
caracter semnat %c
nesemnat char %c
şir %s

De exemplu, dacă intră un utilizator douăzeci ca intrare, ca douăzeci este o valoare întreagă zecimală , specificăm toate valorile întregi zecimale în C folosind %d specificator de format . În mod similar, valori flotante sunt specificate folosind %f .

Cod de bază pentru Printf() și Scanf():

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

Ieșire:

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

Explicaţie:

În programul de mai sus, folosim scanf() pentru a citi intrarea din consolă și a le stoca în variabile a & b. După aceea, efectuăm operații aritmetice precum plus , scădere , și multiplicare iar ulterior stocați rezultatele în trei variabile noi (Suma, Sub, Mul). În cele din urmă, prin utilizarea funcția printf(). , imprimăm rezultatele.

Exemplul 2:-

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

În programul de mai sus, scanf() citește două intrări din program, chiar dacă trecem o variabilă pentru că am specificat doi specificatori de format . Amintește-ți mereu, In scanf()/printf() toate specificatorii de format pe care le trecem ar trebui să fie la fel, altfel s-ar putea să obținem niște erori de rulare neașteptate.

Exemplul 3:

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

Ieșire:

 5 Execution finished... 

Explicaţie:

cum să descărcați video de pe youtube vlc

În programul de mai sus, scanf() citește o singură intrare de la utilizator, deoarece am specificat doar un specificator de format . Deci, din acest exemplu, concluzionăm că niciuna dintre intrări nu va fi luată în funcție de numărul de specificatorii de format .

Exemplul 4:

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

Ieșire:

 6 Segmentation fault 

Explicaţie:

În programul de mai sus, transmitem valoarea unei variabile către scanf() în locul adresei variabilei. Va duce la a eroare de rulare . În Linux, vom primi o eroare de segmentare.

lista de state

Exemplul 5:

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

Ieșire:

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

Explicaţie:

În programul de mai sus, când printf scanează șirul de format, acesta îl va înlocui specificatori de format (%d) cu valorile reale la care trecem printf() . adică primul specificator de format va fi înlocuit cu prima valoare pe care o transmitem printf(), și așa mai departe.

Diferențele de bază dintre Printf() și Scanf()

Câteva diferențe între printf și scanf sunt: ​​-

    funcția printf(). scoate date la ieșirea standard, adică la consolă. În contrast, cel funcția scanf(). citește datele de la intrarea standard, adică dispozitivele de intrare printf() folosește rar indicatorul în câteva cazuri dar scanf() folosește întotdeauna un pointer pentru a atribui valoare variabilei date. printf() și scanf() ambele au același tip de returnare întreg . The printf() returnează numărul de caractere pe care le-a tipărit cu succes pe consolă, în timp ce scanf() se intoarce 0,1 sau EOF pe baza specificatorului de format furnizat.