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#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
int opcion; //variable para escoger el case en el swith
char palabras[3][100];
int i=0;
int contador;
int posicion; //char de 100 elementos para guardar cualquier palabra
string respuesta; //pertenece al while
while(respuesta!="N" && respuesta!="n")
{
cout<<"Digite la opcion#1, para escribir en el archivo de lectura!!!"<<endl;
cout<<"Digite la opcion#2, para mostrar el archivo de lectura!!!"<<endl;
cout<<"Digite la opcion#3, para mostrar la matriz!!!"<<endl;
cout<<"Digite 4, para cambio"<<endl;
cout<<endl;
cout<<"Que opcion desea realizar?"<<endl;
cin>>opcion;
ifstream ArchivoI2("i.dat", ios::in);
ArchivoI2>>i;
switch(opcion)
{
case 1:
{
if(i<3)
{
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
ofstream ArchivoContador("Contador.dat", ios::out);
ofstream ArchivoI("i.dat", ios::out);
if(!ArchivoLectura) //if por si el archivo no existe
{
cerr<<"No se pudo abrir el archivo"<<endl;
cout<<endl;
}
cout<<"Ingrese algo en letras:"<<endl; //se ingresa cualquier palabra
cin>>palabras[i];
ArchivoLectura<<palabras[i]<<endl; //la palabra pasa al archivo externo
contador=i;
i++;
ArchivoContador<<contador;
ArchivoI<<i;
}
else
{
cout<<"Memoria Llena"<<endl;
cout<<endl;
}
}
break;
case 2:
{
ifstream ArchivoLectura2("Lectura.dat", ios::in); //ifstream sirve para mostrar el archivo, el ios::in lo muestra en consola
ifstream ArchivoContador2("Contador.dat", ios::in);
if(!ArchivoLectura2) //if por si no existe el archivo
{
cerr<<"No se pudo abrir el archivo!!"<<endl;
cout<<endl;
}
ArchivoContador2>>contador;
for(int i=0;i<(contador+1);i++)
{
ArchivoLectura2>>palabras[i]; //se mostrara lo que hay en el archivo anterior
}
for(int i=0;i<(contador+1);i++)
{
cout<<palabras[i]<<endl;
}
}
break;
case 3:
{
for(int i=0;i<(contador+1);i++)
{
cout<<palabras[i]<<endl;
}
}
break;
case 4:
{
cout<<"Que posicion desea mostrar?"<<endl;
cin>>posicion;
cout<<"La palabra es: "<<palabras[posicion]<<endl;
cout<<"Escriba la nueva palabra:"<<endl;
cin>>palabras[posicion];
ofstream ArchivoLectura("Lectura.dat", ios::app|ios::binary);
ArchivoLectura.seekp(posicion,ios::beg);
ArchivoLectura.write(palabras[posicion], sizeof(posicion));
}
break;
}
cout<<"Desea realizar otra accion s/n?"<<endl;
cin>>respuesta;
}
return 0;
}