Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/08/2011, 21:54
Avatar de baker1562
baker1562
 
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 8 meses
Puntos: 9
Pregunta Modificar archivo binario

Hola, estoy haciendo un programa y desearia ayuda, en el creo un archivo llamado "Lectura.dat", en el que guardo 3 nombres cualquiera, y son exportados, lo que deseo es modificarlo con la opcion 4 del programa, para que se modifique la posicion a la cual llamo, agradezco su ayuda.

Código C++:
Ver original
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <fstream>
  4. #include <cstdlib>
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.     int opcion;           //variable para escoger el case en el swith
  11.     char palabras[3][100];
  12.     int i=0;
  13.     int contador;
  14.     int posicion;      //char de 100 elementos para guardar cualquier palabra
  15.     string respuesta;         //pertenece al while
  16.    
  17.    
  18.    
  19.    
  20.    
  21.     while(respuesta!="N" && respuesta!="n")
  22.     {
  23.    
  24.     cout<<"Digite la opcion#1, para escribir en el archivo de lectura!!!"<<endl;
  25.     cout<<"Digite la opcion#2, para mostrar el archivo de lectura!!!"<<endl;
  26.     cout<<"Digite la opcion#3, para mostrar la matriz!!!"<<endl;
  27.     cout<<"Digite 4, para cambio"<<endl;
  28.     cout<<endl;
  29.     cout<<"Que opcion desea realizar?"<<endl;
  30.     cin>>opcion;
  31.    
  32.     ifstream ArchivoI2("i.dat", ios::in);
  33.     ArchivoI2>>i;
  34.    
  35.     switch(opcion)
  36.     {
  37.                   case 1:
  38.                         {
  39.                             if(i<3)
  40.                             {
  41.                         ofstream ArchivoLectura("Lectura.dat",ios::binary|ios::app );  //el oftream abre o crea un archivo de escritura, el ios::out abriera el archivo y escrbiera algo nuevo en el
  42.                         ofstream ArchivoContador("Contador.dat", ios::out);
  43.                         ofstream ArchivoI("i.dat", ios::out);
  44.                        
  45.                         if(!ArchivoLectura)     //if por si el archivo no existe
  46.                         {
  47.                            cerr<<"No se pudo abrir el archivo"<<endl;
  48.                            cout<<endl;
  49.                            system("pause");
  50.                            exit(1);
  51.                            }
  52.                            cout<<"Ingrese algo en letras:"<<endl;        //se ingresa cualquier palabra
  53.                            cin>>palabras[i];
  54.                            
  55.                            ArchivoLectura<<palabras[i]<<endl;        //la palabra pasa al archivo externo
  56.                            contador=i;
  57.                            i++;
  58.                            
  59.                            ArchivoContador<<contador;
  60.                            ArchivoI<<i;
  61.                            
  62.                            }
  63.                            else
  64.                            {
  65.                                cout<<"Memoria Llena"<<endl;
  66.                                cout<<endl;
  67.                                system("pause");
  68.                                }
  69.                                }
  70.                            
  71.                   break;
  72.                  
  73.                   case 2:
  74.                         {
  75.                         ifstream ArchivoLectura2("Lectura.dat", ios::in);      //ifstream sirve para mostrar el archivo, el ios::in lo muestra en consola
  76.                         ifstream ArchivoContador2("Contador.dat", ios::in);
  77.                        
  78.                         if(!ArchivoLectura2)             //if por si no existe el archivo
  79.                         {
  80.                           cerr<<"No se pudo abrir el archivo!!"<<endl;
  81.                           cout<<endl;
  82.                           system("pause");
  83.                           exit(1);
  84.                           }
  85.                          
  86.                           ArchivoContador2>>contador;
  87.                           for(int i=0;i<(contador+1);i++)
  88.                           {
  89.                           ArchivoLectura2>>palabras[i];                 //se mostrara lo que hay en el archivo anterior
  90.                           }
  91.                           for(int i=0;i<(contador+1);i++)
  92.                           {
  93.                           cout<<palabras[i]<<endl;
  94.                           }                  
  95.                          
  96.                           system("pause");
  97.                           }
  98.                   break;
  99.                  
  100.                   case 3:
  101.                        
  102.                        {
  103.                                  for(int i=0;i<(contador+1);i++)
  104.                                  {
  105.                                          cout<<palabras[i]<<endl;
  106.                                          
  107.                                          }
  108.                                          system("pause");
  109.                                          }
  110.                        break;
  111.                        
  112.                   case 4:
  113.                        {
  114.                              cout<<"Que posicion desea mostrar?"<<endl;
  115.                              cin>>posicion;
  116.                        
  117.                                   cout<<"La palabra es: "<<palabras[posicion]<<endl;
  118.                                   system("pause");
  119.                                  
  120.                                   cout<<"Escriba la nueva palabra:"<<endl;
  121.                                   cin>>palabras[posicion];
  122.                                  
  123.                                   ofstream ArchivoLectura("Lectura.dat", ios::app|ios::binary);
  124.                                  
  125.                                   ArchivoLectura.seekp(posicion,ios::beg);
  126.                                  
  127.                                   ArchivoLectura.write(palabras[posicion], sizeof(posicion));
  128.                        
  129.                                  
  130.                                   }
  131.                   break;
  132.                   }
  133.                  
  134.                   cout<<"Desea realizar otra accion s/n?"<<endl;
  135.                   cin>>respuesta;
  136.                   system("cls");
  137.                   }
  138.                  
  139.                   return 0;
  140.                  
  141.                   }