logo

Diferencia entre printf() y scanf() en C

Introducción:

Imprimirf() y escanear() son funciones de biblioteca incorporadas en lenguaje C que realizan entrada formateada y salida formateada funciones. Estas funciones se definen y declaran en archivo de encabezado stdio.h . El 'F' en imprimirf y escanear representa 'formateado' . Entonces, ambas funciones imprimirf() y escaneo() use códigos dentro de una cadena de formato para especificar cómo se deben formatear los valores de salida o entrada. Necesitamos importar el archivo de encabezado para usarlo. imprimirf() y escaneo() :

 #include 

En este artículo, discutiremos la diferencia entre printf() y scanf(), pero antes de discutir las diferencias, debemos conocer printf() y scanf() con su sintaxis y ejemplos.

Imprimirf():

Él huellas dactilares cualquier cosa entre doble comillas con especificadores de formato %c, %d,%f, etc., para mostrar un valor de una variable o una constante y también puede tener caracteres de secuencia de escape como , para nueva línea, y pestaña horizontal , respectivamente.

cadena dividida c ++

Sintaxis:

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

Escanear():

Nos permite leer uno o varios valores ingresados ​​por el usuario a través del teclado de la consola. Podemos colocar tantos especificadores de formato tantas entradas que queramos con o sin formato.

Sintaxis:

 scanf(%format_specifier, &pointer_to_variable); 

Cadena del especificador de formato:

En el primer parámetro de imprimirf y escanear , pasamos cadena de formato o cadena del especificador de formato , y especificamos que tipo de valor va a ingresar el usuario.

Tipo de datos Conversión cadena de formato
Entero entero corto %d o %i
corto sin firmar % en
firmado hace mucho tiempo % de edad
mucho tiempo sin firmar % lu
hexadecimal sin signo % X
octal sin firmar %O
Real flotar % f o % g
doble %lf
personaje firmado %C
carácter sin firmar %C
cadena %s

Por ejemplo, si un usuario ingresa 20 como entrada, como 20 es un valor entero decimal , especificamos todos los valores enteros decimales en C usando el %d especificador de formato . Similarmente, valores flotantes se especifican usando %F .

cadena booleana java

Código básico para Printf() y Scanf():

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

Producción:

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

Explicación:

En el programa anterior, estamos usando el escaneo() leer la entrada desde la consola y almacenarla en variables a y b. Después de eso, realizamos operaciones aritméticas como suma , sustracción , y multiplicación y luego almacenar los resultados en el tres nuevas variables (Suma, Sub, Mul). Finalmente, utilizando el función printf() , estamos imprimiendo los resultados.

Ejemplo 2:-

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

En el programa anterior, escaneo() lee dos entradas del programa a pesar de que estamos pasando una variable porque especificamos dos especificadores de formato . Recuerda siempre, en scanf()/imprimir() todos especificadores de formato que aprobemos debería ser el mismo; de lo contrario, podríamos obtener algunos errores de ejecución inesperados.

Ejemplo 3:

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

Producción:

 5 Execution finished... 

Explicación:

En el programa anterior, escaneo() lee solo una entrada del usuario porque especificamos solo un especificador de formato . Entonces, de este ejemplo, concluimos que ninguna de las entradas se tomará dependiendo del número de especificadores de formato .

Ejemplo 4:

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

Producción:

 6 Segmentation fault 

Explicación:

En el programa anterior, estamos pasando el valor de una variable a escaneo() en lugar de la dirección variable. Esto conducirá a un Error de tiempo de ejecución . En Linux, obtendremos un error de falla de segmentación.

js cadena multilínea

Ejemplo 5:

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

Producción:

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

Explicación:

En el programa anterior, cuando imprimirf escanea la cadena de formato, reemplazará el especificadores de formato (%d) con los valores reales que pasamos a imprimirf() . es decir, el primer especificador de formato será reemplazado por el primer valor que pasemos imprimirf(), etcétera.

Diferencias básicas entre Printf() y Scanf()

Algunas diferencias entre printf y scanf son: -

    función printf() envía datos a la salida estándar, es decir, a la consola. En contraste, el función scanf() lee datos de la entrada estándar, es decir, dispositivos de entrada imprimirf() rara vez usa puntero en algunos casos, pero escaneo() siempre utiliza un puntero para asignar valor a la variable dada. imprimirf() y escaneo() ambos tienen el mismo tipo de devolución de entero . El imprimirf() devuelve el número de caracteres que ha impreso con éxito en la consola, mientras que escaneo() devoluciones 0,1 o EOF según el especificador de formato proporcionado.