#include <iostream> using namespace::std; // <iostream> se incluye, como en todos los programas // porque se usara entrada - salida # include <fstream> using std::ifstream; // El encabezado fstream permite crear objetos ofstream // e ifstream, que abren un archivo para salida y para // entrada, respectivamente. # include <cstdlib> int main() { // Abre main ofstream Mi_Archivo_Salida( "Mis_Datos.dat", ios::out); // El constructor ofstream abre un archivo para escribir en el, // es decir para enviar datos a ese archivo, mediante la creacion // de un objeto llamado Mi_Archivo_Salida (ustedes le pueden poner el // nombre que quieran). // Se pasan dos argumentos al constructor del objeto, el nombre // del archivo, que es por completo arbitrario - "Mis_Datos.dat". // y el modo de apertura del archivo - ios::out -. // Existen diversos modos de apertura de archivos que pueden ser usados // a conveniencia en este caso ( apertura para envio de datos) // a saber: // ios::out Si el archivo "Mis_Datos.dat" existe, entonces se // sobreescribira todo lo que entre a continuacion en ese // archivo y se BORRARAN todos los datos previos; hay que // estar prevenidos acerca de esto. // Si "Mis_Datos.dat" no existe, entonces se creara un // archivo nuevo con ese nombre. // ios::app En este caso, si el archivo existe, entonces la nuevas // entradas se colocan debajo de las que ya existen. // Caso contrario, el archivo se crea. // ios::ate Si el archivo existe, borra los datos existentes y escribe // los nuevos, si no existe, entonces lo crea. // ios::trunc Si el archivo existe, borra los datos existentes y escribe // los nuevos, si no, lo crea. // ios::in Si el archivo existe, entonces borra dos entradas del archivo // cada vez y eventualmente sustituye todos los datos existentes, // pero si introduce menos de la mitad de datos, entonces los nuevos // estaran encima de los datos primitivos, hay que tener cuidado. // Si el archivo no existe, no lo crea. if ( !Mi_Archivo_Salida ) { // Abre if cerr << "\nEL ARCHIVO NO PUDO ABRIRSE." <<endl; exit( 1 ); // Por esto se incluyo <cstdlib> } // Cierra if /* como se esta usando ios::out como modo de apertura de archivo podria pensarse que es inutil poner el caso de un fallo en la apertura, ya que de no existir se creara. Sin embargo puede ocurrir otro tipo de fallos, como lo que sucede si se trata, por ejemplo, de crear un archivo en un directorio en el que no tenemos permiso ( basta sustituir "Mis_Datos.dat" por "/home/Mis_Datos.dat" para que, en mi caso, mande el mensaje); tambien podria suceder que no hay memoria suficiente para crear el archivo o cualquier otra cosa, asi que es mejor incluir la posibilidad de fallo */ cout << "\nIntroduzca los datos (EOF para terminar): " << endl; float datos; /* while se evalua true siempre que no se introduzca el caracter de fin de archivo. Esta forma compacta de recibir datos es dificil de entender cuando se encuentra por primera vez, pero es muy util. En los ejercicios de Kernighan y Ritchie del capitulo 1 ( que se pueden ver en este mismo blog) se puede encontrar un buen numero de ejemplos acerca del poder de esta forma de usar while */ while ( cin >> datos ) { // Abre while Mi_Archivo_Salida << datos << endl; // asi como se introduce datos, se podria introducir mas elementos // dejando un espacio ' ' si fuera necesario. cout << endl; } // Cierra while return 0; }
Ingreso básico
Hace 5 años
Hola gracias por compartir tu programa.
ResponderEliminarSoy nueva en programacion y estoy estudiando con un texto de esa editorial. Pero no trae como hacer un programa de archivo par a escritura y otro para lectura (. dat y .txt) y que haga otras "maromas" Ojala pudieras colocar algo parecido
SAludos!!
Hola. La extensión de los archivos puede ser cualquiera (.dat, .txt, etc.), por otro lado, si usas algún unix o linux puedes ver el link que puse en la parte de arriba de la entrada. Son herramientas del sistema. Desconozco si en windows se puede hacer pero supongo que sí.
ResponderEliminarSaludos.
no sirvee .l.
ResponderEliminarTan fácil como que copies, pegues y ejecutes el programa. O sé más específico. ¿qué exactamente es lo que "no sirve"?
EliminarHola. Gracias por compartir tu programa me sirvió de mucho
ResponderEliminar