Documente Academic
Documente Profesional
Documente Cultură
“El Lenguaje de Programación C”, 2ª edición, Brian Kernighan y Dennis Ritchie, Editorial
Pearson ISBN 9688802050
“El Lenguaje de Programación C++”, 1ª edición, Bjarne Stroustrup, Editorial Pearson, ISBN
847829046X
2. Entrada/Salida en C
1. Introducción
El lenguaje C (y consecuentemente también C++) dispone de una librería para entrada
salida: Standard Input-Output Library que permite ejecutar operaciones básicas de E/S. Las
declaraciones requeridas por esta librería están contenidas en el archivo de encabezado
“stdio.h”, que debe incluírse con la directiva correspondiente:
#include <stdio.h>
Este archivo define tres “streams” estándar: stdin, stdout y stderr, que utilizan entrada y
salida basada en caracteres y son abiertas automáticamente. Por defecto stdin y stderr
están direccionadas a la pantalla, y stdin al teclado.
2. E/S básica en C
Estas operaciones se hacen mediante las funciones getchar() y putchar():
int getchar() – lee un carácter desde stdin
int putchar(char c) – escribe el carácter 'c' en stdout
Se dispone también de otras funciones, tales como getline(), etc.
3. E/S formateada en C
Las funciones printf() y scanf() permiten aplicar formato a los datos de E/S, como por
ejemplo, cantidad de decimales, justificación de texto, conversión a
mayúsculas/minúsculas, numeración hexadecimal, etc. Ambas funciones toman al
menos dos argumentos (pueden ser mas):
1. La cadena de formato
2. Los datos a enviar a la salida, en el caso de printf() o a recibir de la entrada, en el
caso de scanf()
4. Ejemplos printf()
printf(“%-1.3f\n”, 3.1415927);
3.141
printf(“IVA: 21,5%%\n”);
IVA: 21,5%
5. Ejemplos scanf()
En esta función, el primer argumento es la cadena de formato, al igual que en printf(), y
el segundo la dirección de las variables que recibirán los datos:
char string[80];
scanf(``%s'',string);
6.
2. Streams predefinidos
Por defecto, la salida asignada a un programa es la pantalla, y en C++ está representada
por el stream cout a la que se denomina “salida estándar”. Las definiciones necesarias
para su uso están contenidas en el archivo de encabezamiento iostream. Caracteres,
números y variables pueden insertarse en cout mediante el operador de inserción <<.
Ejemplo:
cout << “Hola!”; // muestra una cadena de texto en la pantalla
cout << 120; // muestra un número en pantalla
cout << x; // muestra el valor de la variable x en pantalla
Para separar las líneas en pantalla pueden usarse dos métodos: agregar “\n” o usar el
manipulador endl:
cout << “Nombre: “ << nom << “\n” << “ Edad: “ << ed;
o
cout << “Nombre: “ << nom << endl << “ Edad: “ << ed;
Es importante recordar que cin sólo procesa la entrada desde el teclado una vez que el
usuario pulsó la tecla “Enter”. El tipo de la variable que recibe datos determina cómo se
interpretan los datos ingresados por teclado.
es equivalente a:
cin >> a >> b;
La librería iostream provee dos streams predefinidas mas: cerr, que es la salida estándar
de errores y clog, la salida estándar de registro o “logging”.
int main () {
ofstream myfile;
myfile.open ("salida.txt");
myfile << "Escribiendo en archivos.\n";
myfile.close();
return 0;
}
Este programa crea (o abre, si existe) un archivo llamado “salida.txt” y escribe una
cadena de texto en su interior.
5. Apertura de un archivo
Para utilizar un objeto ifstream, ofstream o fstream debe llevarse a cabo la vinculación
del stream al archivo físico mediante una operación de apertura mediante la función
open(), que toma dos argumentos: nombre del archivo y modo de apertura.
El primer parámetro es una cadena de caracteres (const char *) terminada en '\0' y
opcionalmente el segundo, que una constante que determinará el uso que
pretendemos hacer del archivo según la siguiente tabla:
Modo Significado
ios::in El archivo se abre para operaciones de lectura (sólo extracción de
caracteres)
ios::out El archivo se abre para operaciones de escritura (sólo inserción de
caracteres)
ios::binary El archivo se abre en modo binario (su contenido no es texto sino
bytes)
ios::app Las operaciones de inserción tienen lugar al final del archivo, esto
es, preservando su contenido inicial
ios::trunc Si el archivo abierto existe, se descarta la totalidad de datos que
contiene al momento de la apertura
ofstream arch;
arch.open( “datos.txt”, ios::out | ios::app | ios::binary);
En este caso, datos.txt se abre para escribir datos binarios, preservando su contenido
actual.
En todos los casos, la función is_open() permite verificar si un archivo está disponible
para operar sobre el:
if( arch.is_open(){ // se puede operar }
else cout << “Archivo cerrado”;
6. Cierre de un archivo
Para garantizar que las operaciones realizadas efectivamente se reflejen en el archivo
4. Manipuladores
La librería estándar iostream provee un conjunto de funciones llamadas manipuladores
que, utilizados en conjunto con los operadores << y >> permiten modificar el
comportamiento de los streams. La tabla siguiente muestra algunas frecuentemente
utilizadas:
Manipulador Propósito
endl Nueva línea (Enter)
ends Inserta un carácter de fin de cadena (\0)
flush Vacía el buffer de un stream
skipws Salta espacios y tabulaciones
uppercase Transforma a mayúsculas