stdio.h
Especificadores de Conversión para fscanf ANSI C
Enteros
d |
Lee un entero decimal opcionalmente con signo. El argumento correspondiente
es un puntero a un entero |
i |
Lee un entero decimal, octal, o hexadecimal opcionalmente con signo.
El argumento correspondiente es un puntero a un entero |
o |
Lee un entero octal sin signo. El argumento correspondiente es un puntero
a un entero sin signo |
u |
Lee un entero decimal sin signo. El argumento correspondiente es un
puntero a un entero sin signo |
x ó X |
Lee un entero hexadecimal. El argumento correspondiente es un puntero
a un entero sin signo. |
h ó l |
[Prefijo] Coloca antes de cualquier especificador de conversión
de enteros para indicar que la entrada de datos es un entero de tipo short
o long |
Ejemplo:
#include <stdio.h>
int main()
{
int ddec, idec, ioct, ihex;
unsigned int ooct, udec, xhex;
short int hddec;
long int lddec;
printf( "Introduce un número decimal: " );
scanf( "%d", &ddec );
printf( "Introduce un número decimal, octal (precédelo con un cero, 0), y\n hexadecimal (precédelo con un cero y una '\x\', 0x): " );
scanf( "%i %i %i", &idec, &ioct, &ihex );
printf( "Introduce un número octal: " );
scanf( "%o", &ooct );
printf( "Introduce un número decimal (no negativo): " );
scanf( "%u", &udec );
printf( "Introduce un número hexadecimal: " );
scanf( "%x", &xhex );
printf( "Introduce un número decimal \"pequeño\" y uno \"grande\": " );
scanf( "%hd %ld", &hddec, &lddec );
printf( "\nHas introducido: " );
printf( "%d %d %d %d %d %d %d %d %d\n", ddec, idec, ioct, ihex, ooct, udec, xhex, hddec, lddec );
return 0;
}
Números de Coma Flotante
e, E, f, g, ó G |
Lee un valor de coma flotante. El argumento correspondiente es un puntero
a una variable de coma flotante |
l ó L |
[Prefijo] Coloca antes de cualquier especificador de conversión
de coma flotante para indicar que la entrada de datos es un valor de tipo
double
o long double |
Ejemplo:
#include <stdio.h>
int main()
{
float ereal, freal, greal;
double lfreal;
long double Lfreal;
printf( "Introduce un número real: " );
scanf( "%f", &freal );
printf( "Introduce un número real, con exponente: " );
scanf( "%e", &ereal );
printf( "Introduce otro número real, con exponente: " );
scanf( "%g", &greal );
printf( "Introduce un número real con doble precisión y otro con mayor aún: " );
scanf( "%lf %Lf", &lfreal, &Lfreal );
printf( "\nHas introducido: " );
printf( "%5.10f %5.12e %5.12g %10.20lf %10.20Lf\n", freal, ereal, greal, lfreal, Lfreal );
return 0;
}
Caracteres y Cadenas
c |
Lee un carácter. El argumento correspondiente es un puntero
a char, ningún nulo ('\0') es añadido |
s |
Lee una cadena de caracteres. El argumento correspondiente es un puntero
a una array de tipo char que es suficientemente grande para guardar
la cadena y un carácter nulo ('\0') final |
Ejemplo:
#include <stdio.h>
#include <string.h>
int main()
{
char c, cadena[80];
printf( "Introduce un carácter: " );
scanf( "%c", &c );
printf( "Introduce una cadena de caracteres (sin espacios): " );
scanf( "%s", cadena );
printf( "\nHas introducido: " );
printf( "\'%c\' \"%s\" (%d caracteres)\n", c, cadena, strlen(cadena) );
return 0;
}
Conjunto de Búsqueda
[caracteres a buscar] |
Busca en una cadena de caracteres un conjunto de caracteres que están
guardados en un array |
Ejemplo:
#include <stdio.h>
#include <string.h>
int main()
{
char cadena[80], temp[80];
printf( "Escribe una palabra, que empiece por una vocal: " );
scanf( "%[aeiou]", cadena );
scanf( "%s", temp ); /* Recoger los caracteres restantes */
printf( "\nSólo se ha recogido las primeras letras que sean vocales: \"%s\"\n", cadena );
printf( "Escribe otra palabra, que empiece por una consonante (no son vocales): " );
scanf( "%[^aeiou]", cadena );
printf( "\nSólo se ha recogido las primeras letras que no sean vocales: \"%s\"\n", cadena );
return 0;
}
Misceláneo
números enteros |
[Prefijo] Coloca antes de un especificador para indicar la "anchura
de campo" de caracteres, a la hora de asignar el valor introducido. Sólo
se asignarán los primeros x caracteres especificados por
el número prefijo. |
p |
Lee un puntero de memoria de la misma forma producida cuando una dirección
de memoria es convertida con %p en una sentencia de fprintf,
fprintf, sprintf, vfprintf, vprintf, o vsprintf |
n |
Guarda el número de caracteres entradas hasta ahora en este fscanf,
scanf, o sscanf. El argumento correspondiente es un puntero a un entero. |
% |
Salta un signo de porcentaje (%) en los datos de entrada |
* |
[Prefijo] Símbolo de supresión de asignación.
Actúa como un comodín para el dato introducido. |
Ejemplo:
#include <stdio.h>
int main()
{
int num1, num2, tam, porc;
unsigned char cadena[10];
unsigned int dia, mes, anyo;
void *memPtr;
printf( "Introduce un número de 6 dígitos: " );
scanf( "%3d%3d", &num1, &num2 );
printf( "El número introducido ha sido separado en 2 números de 3 dígitos cada uno: %d y %d\n\n", num1, num2 );
printf( "Introduce una palabra (hasta 10 letras): " );
scanf( "%s%n", cadena, &tam );
printf( "La palabra escrita: \"%s\", %d caracteres escritos. Comienza en la dirección: %p\n\n", cadena, tam, cadena );
printf( "Introduce una dirección de memoria, en hexadecimal: " );
scanf( "%p", &memPtr );
printf( "La memoria es: %p, y como datos tiene: %s\n\n", memPtr, memPtr );
printf( "Introduce un porcentaje (usa el símbolo %%): " );
scanf( "%d%%", &porc );
printf( "Introdujiste: %d%%\n\n", porc );
printf( "Introduce la fecha de hoy: " );
scanf( "%d%*c%d%*c%d", &dia, &mes, &anyo );
printf( "Día: %d, Mes: %d, Año: %d\n\n", dia, mes, anyo );
return 0;
}