logo

Diferència entre printf() i scanf() a C

Introducció:

Printf() i Scanf() són funcions de biblioteca incorporades en llenguatge C que funcionen entrada formatada i sortida amb format funcions. Aquestes funcions es defineixen i es declaren a fitxer de capçalera stdio.h . El 'f' en imprimirf i escanf significa 'formatat' . Per tant, ambdues funcions printf() i scanf() utilitzeu codis dins d'una cadena de format per especificar com s'han de formatar els valors de sortida o d'entrada. Hem d'importar el fitxer de capçalera per utilitzar-lo printf() i scanf() :

 #include 

En aquest article, parlarem de la diferència entre printf() i scanf(), però abans de parlar de les diferències, hem de conèixer el printf() i scanf() amb la seva sintaxi i exemples.

Printf():

Això impressions qualsevol cosa entre cometes dobles amb especificadors de format %c, %d,%f, etc., per mostrar un valor d'una variable o una constant i també pot tenir caràcters de seqüència d'escapada com Nou Testament per nova línia, i pestanya horitzontal , respectivament.

Gràfic de números romans 1100

Sintaxi:

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

Scanf():

Ens permet llegir un o diversos valors introduïts per l'usuari a través del teclat de la consola. En podem posar tantes especificadors de format tantes entrades que vulguem amb o sense format.

Sintaxi:

 scanf(%format_specifier, &pointer_to_variable); 

Cadena d'especificador de format:

En el primer paràmetre de imprimirf i escanf , passem cadena de format o cadena d'especificació de format , i especifiquem quin tipus de valor introduirà l'usuari.

Tipus de dades Conversió cadena de format
Enter nombre enter curt %d o % i
curt sense signar % en
signat llargament % ld
fa temps sense signar % lu
hexadecimal sense signe % x
octal sense signar %O
Real flotar % f o % g
doble %lf
caràcter signat %c
caràcter sense signar %c
corda %s

Per exemple, si entra un usuari 20 com a entrada, com 20 és un valor sencer decimal , especifiquem tots els valors enters decimals en C mitjançant l' especificador de format %d . De la mateixa manera, valors flotants s'especifiquen utilitzant %f .

transició d'opacitat css

Codi bàsic per a Printf() i Scanf():

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

Sortida:

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

Explicació:

En el programa anterior, estem utilitzant el scanf() per llegir l'entrada de la consola i emmagatzemar-les en variables a i b. Després d'això, fem operacions aritmètiques com addició , resta , i multiplicació i després emmagatzemar els resultats al fitxer tres noves variables (Suma, Sub, Mul). Finalment, utilitzant el funció printf(). , estem imprimint els resultats.

Exemple 2: -

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

En el programa anterior, scanf() llegeix dues entrades del programa tot i que estem passant una variable perquè hem especificat dos especificadors de format . Recordeu sempre, En scanf()/printf() tot el especificadors de format que passem hauria de ser el mateix, sinó podríem tenir alguns errors d'execució inesperats.

Exemple 3:

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

Sortida:

 5 Execution finished... 

Explicació:

En el programa anterior, scanf() només llegeix una entrada de l'usuari perquè només hem especificat un especificador de format . Així, a partir d'aquest exemple, concloem que no es prendrà cap de les entrades en funció del nombre de especificadors de format .

Exemple 4:

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

Sortida:

 6 Segmentation fault 

Explicació:

En el programa anterior, estem passant el valor d'una variable a scanf() en lloc de l'adreça variable. Portarà a a error d'execució . A Linux, obtindrem un error de segmentació.

aws desplaçament cap al vermell

Exemple 5:

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

Sortida:

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

Explicació:

En el programa anterior, quan imprimirf escaneja la cadena de format, substituirà el especificadors de format (%d) amb els valors reals als quals passem printf() . és a dir, el primer especificador de format es substituirà pel primer valor que passem printf(), etcètera.

Diferències bàsiques entre Printf() i Scanf()

Algunes diferències entre printf i scanf són: -

    funció printf(). envia dades a la sortida estàndard, és a dir, a la consola. En canvi, el funció scanf(). llegeix dades de l'entrada estàndard, és a dir, dispositius d'entrada printf() rarament utilitza el punter en alguns casos, però scanf() sempre utilitza un punter per assignar valor a la variable donada. printf() i scanf() tots dos tenen el mateix tipus de retorn de enter . El printf() retorna el nombre de caràcters que ha imprès correctament a la consola, mentre que scanf() torna 0,1 o EOF basat en l'especificador de format proporcionat.