Uso de Printf, Scanf y Scanf_s en C/C++




Printf, Scanf y Scanf_s son funciones de lenguaje C que nos permitirán imprimir datos en pantalla o por el contrario, obtener datos a través del teclado.
Para poder utilizar estas funciones, debemos incluir la siguiente librería en nuestro programa:

#include <stdio.h>

¿Como usar Printf?


Printf() tiene parámetros, donde el primero es la cadena a imprimir, y los siguientes son las variables a insertar dentro de la cadena que se está imprimiendo, ejemplo:

    char letra = 'A';
    char cadena[20] = "chibisistemas";
    int numero_int = 22;
    long numero_long = 333;
    long long numero_longlong = 444444;
    float numero_float = 12.123;
    double numero_double = 12.123456;

    printf("La letra es %c \n", letra);
    printf("La cadena es %s \n", cadena);
    printf("El numero int es %d\n", numero_int);
    printf("El numero long es %ld\n", numero_long);
    printf("El numero long long es %lld\n", numero_longlong);
    printf("El numero float es %0.3f \n", numero_float); //0.3 = 3 decimales
    printf("El numero double es %0.6lf \n", numero_double); //0.6 = 6 decimales

La salida obtenida al correr el programa es la siguiente:


La letra es A
La cadena es chibisistemas
El numero int es 22
El numero long es 333
El numero long long es 444444
El numero float es 12.123
El numero double es 12.123456

¿Cómo usar Scanf ó Scanf_s?

La principal diferencia entre scanf() y scanf_s() es que scanf_s() permite especificar el tamaño del array donde ingresaremos lo obtenido por el teclado, ejemplo:

char cadena[4];
scanf("%s",&cadena);
scanf_s("%s",&cadena,4);

Si nosotros introducimos "hola" y apretamos ENTER, lo que recibira la computadora es "hola\n" donde "\n" equivale al boton Enter, por lo tanto son 5 caracteres, pero nuestro array solo soporta 4.

Lo que sucederá con scanf() es que el programa fallara, pues quiere introducir 5 caracteres en 4 espacios.

Si utilizamos scanf_s() con un tamaño de 4, aunque se reciban 5 caracteres, se limitara a leer solo los primeros 4, por lo tanto el programa correrá con exito pues no tendrá inconveniente para guardar 4 caracteres en un espacio de 4.

Los siguientes códigos nos ayudaran a recibir otro tipo de datos:


    char variable_cadena[20];
    int variable_int;
    long variable_long;
    long long variable_longlong;
    float variable_float;
    double variable_double;

    scanf("%s", &variable_cadena); //Para string _ cadena
    scanf("%d", &variable_int); //Para entero
    scanf("%ld", &variable_long); //Para long
    scanf("%lld", &variable_longlong); //Para long long
    scanf("%f", &variable_float); //Para float
    scanf("%lf", &variable_double); //Para double (long float)

    printf("%s\n", variable_cadena); //Para string _ cadena
    printf("%d\n", variable_int); //Para entero
    printf("%ld\n", variable_long); //Para long
    printf("%lld\n", variable_longlong); //Para long long
    printf("%0.2f\n", variable_float); //Para float 
    printf("%0.5lf\n", variable_double); //Para double (long float)

No hay comentarios.