MANEJO DE ARCHIVOS


Archivos de texto.

 

El siguiente ejemplo muestra como se programa el manejo de archivos de texto en C++.  El programa escribe líneas de máximo 80 caracteres en un archivo llamado DATOS.TXT, el cual queda ubicado en el mismo directorio donde se tenga guardado el programa.

 

#include <cstdlib>

#include <iostream>                                       

#include <fstream>                                         

 

/* Programa que permite crear un archivo de datos de tipo texto.

   El programa verifica que el archivo se pueda crear en el directorio de trabajo

   Implementado por: Edgar Romero R., Ing. de Sistemas

*/

 

using namespace std;

 

int main(int argc, char *argv[])

{

  int con = 0; // Se usa para contar cuantos registros incluimos en el archivo

  bool seguir;

  char nombre[80]; // Se usa para ller los datos a incluir en el archivo

    

  // Abre un archivo en el modo de escritura                

                                                               

  ofstream salida("datos.txt"); // Verifica la posibilidad error al abrir el archivo de escritura

   

  if(!salida)  //Se verifica que el archive se haya podido crear

  {

    cout << "\nNo puede abrir el archivo datos.txt\n";

    return EXIT_SUCCESS;

  }

  // lee datos digitados desde el teclado y los guarda en el archivo

  seguir = true;

  while(seguir)

  {

    cout<<"Digite un nombre (FIN para terminar): ";

    gets(nombre); // Se usa la gets(), en vez de cin, para poder leer líneas de texto que tengan espacios en blanco para separar palabras

    if (strcmp(nombre,"FIN") == 0) // Se termina el proceso

      seguir = false;

    else

    {

      // Se escriben los datos leidos en el archivo

      salida << nombre << "\n";

      con++;

    }

  }

  salida.close();

  cout << "\n" << con << " registros copiados en datos.txt\n";

  system("PAUSE");

  return EXIT_SUCCESS;

}

 


Lectura de datos de un archivo de texto:


#include <cstdlib>

#include <iostream>                                        

#include <fstream>                                        

/* Programa que permite leer un archivo de datos de tipo texto. El programa verifica que el archivo exista en el direcorio de trabajo */

 

using namespace std;

int main(int argc, char *argv[])

{  // Abre un archivo que supuestamente existe              

  ifstream entrada("datos.txt");

  // Verifica la existencia del archivo                    

  if(!entrada)                                             

  {                                                      

    cout << "\nNo puede abrirse el archivo: datos.txt";

    system("PAUSE");

    return EXIT_SUCCESS;

  }   // Despliega el contenido del archivo

  char datos[100];

  while(entrada)

  {

    entrada.getline(datos,sizeof(datos));

    cout << "\n" << datos;

  }

  entrada.close();

  system("PAUSE");

  return EXIT_SUCCESS;

} // Fin del programa

 

ARCHIVOS BINARIOS:

 

Creación de una archivo binario:

 

/////////////////////////////////////////////////////

// mainW.CPP : GRABA UN ARCHIVO EN MODO BINARIO //

/////////////////////////////////////////////////////

#include <cstdlib>

#include <iostream>                                       

#include <fstream>  

 

using namespace std;

 

  struct empleado

    {

      int numero;

      char nombre[31];

      float sueldo;

    };

 

int main(int argc, char *argv[])

  {

    ofstream salida("EMPRESA.DAT", ios::binary);

    if(!salida)

      {

                cout << "\nNo puede abrirse el archivo EMPRESA.DAT\n";

        return EXIT_SUCCESS;

     }

     empleado unempleado; // Se define la variable tipo empleado

     do

     {

       cout << "Número (0=Fin) : ";

       cin>> unempleado.numero; // Se lee el numero

       cin.ignore(); //ignora los caracteres siguientes en la entrada

       if(!unempleado.numero) // Si numero es cero termina el programa

                  return EXIT_SUCCESS;

       cout << "Nombre : ";

       cin.getline(unempleado.nombre,31); //Se lee el nombre

       cout << "Sueldo : ";

       cin>> unempleado.sueldo; // Se lee el sueldo

       cin.ignore(); //ignora los caracteres siguientes en la entrada

               salida.write((char*) &unempleado,sizeof(unempleado)); // Escribe en el archivo

     }while(unempleado.numero != 0);

  }// Fin del programa

 

Lectura de un archivo binario:

 

/////////////////////////////////////////////////////

// MAINBINLEER.CPP : GRABA UN ARCHIVO EN MODO BINARIO //

/////////////////////////////////////////////////////

#include <cstdlib>

#include <iomanip>

#include <iostream>                                        

#include <fstream>  

 

using namespace std;

 

  struct empleado

    {

      int numero;

      char nombre[31];

      float sueldo;

    };

 

int main(int argc, char *argv[])

{

  ifstream entrada("EMPRESA.DAT", ios::binary); // Se abre el archivo

  if(!entrada) // Se verifica si se pudo abrir el archivo de datos

  {

    cout << "\nNo puede abrirse el archivo EMPRESA.DAT\n";

    return EXIT_SUCCESS;

  }

  empleado unempleado; // Se define la variable del registro de datos

 

  // Se inicia al proceso de lectura de datos desde el archivo

  while(!entrada.eof() && !entrada.fail())

  {

    entrada.read((char*) &unempleado,sizeof(struct empleado)); // Se lee un registro de datos desde el archivo

    if(!entrada.eof()) // Se verifica si se alcanzo el EOF

    {

      cout<<"Codigo: "<< unempleado.numero<<endl;

      cout<<"Nombre: "<<unempleado.nombre<<endl;

      cout.precision(2); // Fijar dos decimales para los numeros

      cout.setf(ios::fixed);

      cout<<"Sueldo:"<<unempleado.sueldo<<endl;

    }

  } // Se termina la lectura de datos porque se llega al fin de archivo

  cout<<"\nFin de archivo..."<<endl;

  system("PAUSE");

  return EXIT_SUCCESS;

} // Fin del programa

 

 

 

Hosted by www.Geocities.ws

1