Menu / C++ / Librerías / <stdio.h> / Función scanf ().

Función scanf.

scanf () es una función que se encuentra en la librería .

Ésta función sirve para recoger datos del canal stdin.

scanf () tiene 2 parámetros, el primero siempre debe ser un string comenzando por un espacio seguido de un carácter de formateo, el otro es la variable o dirección de memoria en la que se va a alojar el dato recogido por scanf ().

Estos son los tipos de formateo en una cadena:

Secuencia de formato
Dato formateado
%c
Imprime el carácter ASCII correspondiente.
%d, %i
Conversión decimal con signo de un entero.
%e, %E
Conversión a float con signo en notación científica.
%f, %F
Conversión a float con signo, usando punto y en decimal.
%g, %G
Conversión a float, usando la notación que requiera menor espacio.
%h
Conversión decimal con signo de un entero (short).
%o
Conversión octal sin signo de un entero.
%p, %P
Dirección de memoria. (Minúsculas y mayúsculas respectivamente).
%s
Cadena de caracteres (Terminada en '\0')
%u
Conversión decimal sin signo de un entero (unsigned).
%x, %X
Conversión haxadecimal sin signo. (Minúsculas y mayúsculas respectivamente).
%m
Realiza un malloc () antes de guardar el dato en la variable.
Combinaciones de formatos
Dato formateado
%lf
Formatea un "long float", al no existir formatea un double.
%li
Formatea un long int o un int32_t ().
%lli
Formatea un long long int o un int64_t ().
%lu
Formatea un unsigned long int o un uint32_t ().
%llu
Formatea un unsigned long long int o un uint64_t ().
%hi
Formatea un short int.
%hu
Formatea un unsigned short int.
Sintaxis:

scanf ( const char * Formato, Direccion en memoria de la variable destino );
Referencia:

  • Parámetro 1 (Obligatorio):
    Es un string con un espacio y el formateo de la variable destino.

  • Parámetro 2:
    La dirección de memoria de la variable destino.

Retorno:

bool (En caso de que se quiera comprobar si se ha realizado con éxito la acción).

Ejemplos de uso de scanf.

Ejemplos de uso de scanf():

scanf(" %s", &vari); // Recoge un dato con formateo de string y lo mete en la dirección de memoria de vari que es de tipo (char *)

scanf(" %u", &vari); // Recoge un dato con formateo de string y lo mete en la dirección de memoria de vari que es de tipo (unsigned int)

scanf(" %i", &vari); // Recoge un dato con formateo de string y lo mete en la dirección de memoria de vari que es de tipo (int)

scanf(" %c", vari); // Recoge un dato con formateo de string y lo mete en vari[] que es de tipo (char[0x100])

Aunque en el ejemplo no sea así, lo normal en el formateo de strings en scanf() es añadir como parámetros (2+) los valores de variables.