Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Mas dudas sobre fstream

Estas en el tema de Mas dudas sobre fstream en el foro de C/C++ en Foros del Web. Hola, necesito que me ayuden a aclarar algo sobre un programa, hice un programa donde ingreso cualquier palabra y esta se almacena en un arreglo ...
  #1 (permalink)  
Antiguo 01/08/2011, 08:29
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Pregunta Mas dudas sobre fstream

Hola, necesito que me ayuden a aclarar algo sobre un programa, hice un programa donde ingreso cualquier palabra y esta se almacena en un arreglo de 3 posiciones, pero al mismo tiempo son exportados a un archivo externo llamado "lectura.dat", como bien se sabe cuando se hace un programa sencillo en c++, los datos se guardan en memoria temporalmente y cuando se cierra el programa todo lo que alla adentro se va, al grano, yo cuando exporto las siguientes palabras de ejemplo

casa-loro-perro,

estas a la hora de volver abrir el programa, se posicionan de nuevo en el arreglo?

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;       //char de 100 elementos para guardar cualquier palabra
  14.     string respuesta;         //pertenece al while
  15.    
  16.    
  17.    
  18.    
  19.    
  20.     while(respuesta!="N" && respuesta!="n")
  21.     {
  22.    
  23.     cout<<"Digite la opcion#1, para escribir en el archivo de lectura!!!"<<endl;
  24.     cout<<"Digite la opcion#2, para mostrar el archivo de lectura!!!"<<endl;
  25.     cout<<"Digite la opcion#3, para mostrar el archivo de escritura!!!"<<endl;
  26.     cout<<"Digite la opcion#4, para mostrar la matriz!!!"<<endl;
  27.     cout<<endl;
  28.     cout<<"Que opcion desea realizar?"<<endl;
  29.     cin>>opcion;
  30.    
  31.     ifstream ArchivoI2("i.dat", ios::in);
  32.     ArchivoI2>>i;
  33.    
  34.     switch(opcion)
  35.     {
  36.                   case 1:
  37.                         {
  38.                             if(i<3)
  39.                             {
  40.                         ofstream ArchivoLectura("Lectura.dat", ios::app);  //el oftream abre o crea un archivo de escritura, el ios::out abriera el archivo y escrbiera algo nuevo en el
  41.                         ofstream ArchivoContador("Contador.dat", ios::out);
  42.                         ofstream ArchivoI("i.dat", ios::out);
  43.                        
  44.                         if(!ArchivoLectura)     //if por si el archivo no existe
  45.                         {
  46.                            cerr<<"No se pudo abrir el archivo"<<endl;
  47.                            cout<<endl;
  48.                            system("pause");
  49.                            exit(1);
  50.                            }
  51.                            cout<<"Ingrese algo en letras:"<<endl;        //se ingresa cualquier palabra
  52.                            cin>>palabras[i];
  53.                            
  54.                            ArchivoLectura<<palabras[i]<<endl;        //la palabra pasa al archivo externo
  55.                            contador=i;
  56.                            i++;
  57.                            
  58.                            ArchivoContador<<contador;
  59.                            ArchivoI<<i;
  60.                            
  61.                            }
  62.                            else
  63.                            {
  64.                                cout<<"Memoria Llena"<<endl;
  65.                                cout<<endl;
  66.                                system("pause");
  67.                                }
  68.                                }
  69.                            
  70.                   break;
  71.                  
  72.                   case 2:
  73.                         {
  74.                         ifstream ArchivoLectura2("Lectura.dat", ios::in);      //ifstream sirve para mostrar el archivo, el ios::in lo muestra en consola
  75.                         ifstream ArchivoContador2("Contador.dat", ios::in);
  76.                        
  77.                         if(!ArchivoLectura2)             //if por si no existe el archivo
  78.                         {
  79.                           cerr<<"No se pudo abrir el archivo!!"<<endl;
  80.                           cout<<endl;
  81.                           system("pause");
  82.                           exit(1);
  83.                           }
  84.                          
  85.                           ArchivoContador2>>contador;
  86.                           for(int i=0;i<(contador+1);i++)
  87.                           {
  88.                           ArchivoLectura2>>palabras[i];                 //se mostrara lo que hay en el archivo anterior
  89.                           }
  90.                           for(int i=0;i<(contador+1);i++)
  91.                           {
  92.                           cout<<palabras[i]<<endl;
  93.                           }                  
  94.                          
  95.                           system("pause");
  96.                           }
  97.                   break;
  98.                  
  99.                   case 3:
  100.                        {
  101.                        ifstream ArchivoEscritura("Escritura.txt", ios::in);                    //se mostrara el archivo de escritura
  102.                        
  103.                        if(!ArchivoEscritura)           //if por si no existe
  104.                        {
  105.                          cerr<<"No se pudo abrir el archivo!!"<<endl;
  106.                          cout<<endl;
  107.                          system("pause");
  108.                          exit(1);
  109.                          }
  110.                          }
  111.                   break;
  112.                  
  113.                   case 4:
  114.                        
  115.                        {
  116.                                  for(int i=0;i<(contador+1);i++)
  117.                                  {
  118.                                          cout<<palabras[i]<<endl;
  119.                                          
  120.                                          }
  121.                                          system("pause");
  122.                                          }
  123.                        break;
  124.                   }
  125.                  
  126.                   cout<<"Desea realizar otra accion s/n?"<<endl;
  127.                   cin>>respuesta;
  128.                   system("cls");
  129.                   }
  130.                  
  131.                   return 0;
  132.                  
  133.                   }
  #2 (permalink)  
Antiguo 01/08/2011, 18:33
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Mas dudas sobre fstream

No entendi que queres hacer, pero respondiendo a esta pregunta:

estas a la hora de volver abrir el programa, se posicionan de nuevo en el arreglo?

NO, tienes que abrir el archivo leeerlo y guardarlo en el arreglo. Magia los programas no hace.

Saludos
  #3 (permalink)  
Antiguo 01/08/2011, 19:53
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Mas dudas sobre fstream

Cita:
Iniciado por sam90 Ver Mensaje
No entendi que queres hacer, pero respondiendo a esta pregunta:

estas a la hora de volver abrir el programa, se posicionan de nuevo en el arreglo?

NO, tienes que abrir el archivo leeerlo y guardarlo en el arreglo. Magia los programas no hace.

Saludos
le puse una opcion de mostrar los datos del arreglo, y cuando les hago llamada se posicionan porque vi que lo hacia, ahora bien, como se modifica una posicion en memoria, ya sea en arreglo y en archivos externos, osea para explicarme

llamo a la posicion 2, y ahi esta la palabra loro, y quiero cambiarlo por lora, como hago para que se modifique(tanto externo como interno al programa)

perdon por tanta preguntadera =(
  #4 (permalink)  
Antiguo 01/08/2011, 19:58
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Mas dudas sobre fstream

Para modificar el arreglo haces nuevamente un : cin>>palabras[i];
Para cambiar una del archivo hay muchas formas. Una de ella podria ser rescribirlo entero.
  #5 (permalink)  
Antiguo 01/08/2011, 22:01
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Mas dudas sobre fstream

Cita:
Iniciado por sam90 Ver Mensaje
Para modificar el arreglo haces nuevamente un : cin>>palabras[i];
Para cambiar una del archivo hay muchas formas. Una de ella podria ser rescribirlo entero.

mmm segun el libro de deitel deitel, que para eso se utiliza un archivo externo pero se guarda en binario, y no me sirve reescribir todo, porque lo que quiero es extraer una linea y modificar esa linea, pero conservando lo demas(igual para eliminar, elimino "x" dato pero si tocar el resto), tratare de averiguar por mi cuenta

grax
  #6 (permalink)  
Antiguo 02/08/2011, 09:59
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Mas dudas sobre fstream

Para eso debes usar archivos binarios...Eso ya es otra cosa. Busca en google que hay info de sobra.

Saludos

Etiquetas: arreglos, fstream
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:55.