Entrada/Salida estándar en C

Atrás

Las funciones estándar de entrada/salida se definen el el fichero de cabeceras stdio.h.

Las funciones principales son:

Ambas funciones (y todas las de sus familias) utilizan un especificador de formato fmt con amplias posibilidades.

La cadena que especifica el formato fmt puede hacer referencia a una o más variables pasadas como argumentos que habrá que formatear (con printf) o que representarán las direcciones de las variables donde se depositará los valores leídas con formato (con scanf), por ejemplo:
   printf("Valores: %d %d\n", num1, num2);

Un especificador de formato fmt tiene la forma general: "%-+ 0w.pmc" que se describe detalladamente en la Tabla 1.

Por ejemplo, el especificador "%8.2lf" se corresponde con el patrón general "%w.pmc".

Si se desea especificar el caracter % habrá que especificarlo por duplicado, por ejemplo:
   printf("Interés: %.2lf %% anual\n", tasa);

%-+ 0w.pmc Ejemplo
% Comienzo de especificador de formato printf ("%d", n);
- Alineación a la izquierda (especialmente útil para cadenas) printf ("%-20s", str);
+ Mostrar signo printf ("%+d", n);
  (espacio) mostrar espacio si no hay signo printf ("% d", n);
0 (cero) rellenar por delante de ceros según anchura printf ("%02d:%02d", hh, mm);
w Anchura mínima del campo (con * se toma como parámetro) printf ("%8d", val);
. A continuación especificador de precisión printf ("%.0f", q);
p Especificador de precisión printf ("%.2f", total);
m Tamaño del dato a convertir printf ("%.2lf", dbl);
c Tipo de conversión printf ("%x", flags);
Tabla 1. Especificador de formato

La Tabla 2 detalla los diferentes modos de conversión según el tipo de las variables a las que hacen referencia.

Especificador Descripción Ejemplo
Enteros
d Entero decimal opcionalmente con signo printf ("%d", n);
i Entero decimal, octal, o hexadecimal opcionalmente con signo scanf ("%i", &i);
o Entero octal sin signo printf ("%o", o);
u Entero decimal sin signo printf ("%u", sz);
x X Entero hexadecimal sin signo printf ("%x", n);
h l [Prefijo]   Indica short o long scanf ("%hd", &s);
Coma flotante
e E f g G Valor en coma flotante scanf ("%f", &nf);
l L [Prefijo]   Indica double o long double scanf ("%lf", &dbl);
Caracteres y cadenas
c Carácter scanf ("%c", &car);
s Cadena (para scanf finaliza con un separador, incluyendo espacios) printf ("Nombre: %s\n", nom);
[conjunto] Especificador de conjunto de caracteres (para scanf) scanf ("%2[0-9A-Fa-f]", &buf);
Tabla 2. Especificadores de conversión


Atrás