En este apartado y los siguientes vamos a ver algunas de las funciones m�s importantes que nos proporcionan las librer�as definidas por ANSI y su utilizaci�n. Como hemos visto hasta ahora, el lenguaje C no proporciona ning�n mecanismo de comunicaci�n ni con el usuario ni con el sistema operativo. Ello es realizado a trav�s de las funciones de librer�a proporcionadas por el compilador.
El fichero de declaraciones que normalmente m�s se utiliza es el stdio.h. Vamos a ver algunas funciones definidas en �l.
Una funci�n que ya hemos utilizado y que, ella y sus variantes, es la m�s utilizadas para la salida de informaci�n es printf. Esta permite dar formato y enviar datos a la salida est�ndar del sistema operativo.
#include <stdio.h> int printf ( const char *format [, argumentos, ...] );
Acepta un string de formato y cualquier n�mero de argumentos. Estos argumentos se aplican a cada uno de los especificadores de formato contenidos en format. Un especificador de formato toma la forma %[flags][width][.prec][h|l] type. El tipo puede ser:
Tipo | Descripci�n |
---|---|
d, i | Entero decimal con signo |
o | Entero octal sin signo |
u | Entero decimal sin signo |
x | Entero hexadecimal sin signo (en min�sculas) |
X | Entero hexadecimal sin signo (en may�sculas) |
f | Coma flotante en la forma [-]dddd.dddd |
e | Coma flotante en la forma [-]d.dddd e[+/-]ddd |
g | Coma flotante seg�n el valor |
E | Como e pero en may�sculas |
G | Como g pero en may�sculas |
c | Un car�cter |
s | Cadena de caracteres terminada en '\0' |
% | Imprime el car�cter % |
p | Puntero |
Los flags pueden ser los caracteres:
Modificador | Descripci�n |
---|---|
+ | Siempre se imprime el signo, tanto + como - |
- | Justifica a la izquierda el resultado, a�adiendo espacios al final |
blank | Si es positivo, imprime un espacio en lugar de un signo + |
# | Especifica la forma alternativa |
En el campo width se especifica la anchura m�nima de la forma:
Modificador | Descripci�n |
---|---|
n | Se imprimen al menos n caracteres. |
0n | Se imprimen al menos n caracteres y si la salida es menor, se anteponen ceros |
* | La lista de par�metros proporciona el valor |
Hay dos modificadores de tama�o, para los tipos enteros:
Modificador | Descripci�n |
---|---|
l | Imprime un entero long |
h | Imprime un entero short |
Otra funci�n similar a printf pero para la entrada de datos es scanf. Esta toma los datos de la entrada est�ndar del sistema operativo. En este caso, la lista de argumentos debe estar formada por punteros, que indican d�nde depositar los valores.
#include <stdio.h> int scanf ( const char *format [, argumentos, ...] );
Hay dos funciones que trabajan con strings. La primera lee un string de la entrada est�ndar y la segunda lo imprime en el dispositivo de salida est�ndar.
#include <stdio.h> char *gets ( char *s ); int puts ( char *s );
Tambi�n hay funciones de lectura y escritura de caracteres individuales.
#include <stdio.h> int getchar ( void ); int putchar ( int c );
Veamos, por ejemplo, un programa que copia la entrada est�ndar a la salida est�ndar del sistema operativo, car�cter a car�cter.
#include <stdio.h> main() { int c; while ( (c = getchar()) != EOF ) putchar(c); }