Hice este programa
Código C++:
Ver original#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char socios[4][25];
int opcion;
int i=0;
char vacio=NULL;
int contador_socios;
int numero;
string respuesta;
while(respuesta!="n" && respuesta!="N")
{
cout<<"Digite#1 para agregar socio"<<endl;
cout<<"Digite#2 para modificar socio"<<endl;
cout<<"Digite#3 para eliminar socio"<<endl;
cout<<"Digite#4 para mostrar socios"<<endl;
cout<<endl;
cout<<"Que opcion desea realizar?"<<endl;
cin>>opcion;
switch(opcion)
{
case 1:
{
ofstream SocioSaliente("socios.dat", ios::app|ios::binary);
ofstream Archivo_I_Saliente("i.dat", ios::out);
ifstream Archivo_I_Entrante("i.dat", ios::in);
ofstream ContadorSociosSaliente("contador_socios.dat", ios::out);
Archivo_I_Entrante>>i;
if(i<4)
{
cout<<"Digite el nombre del socio #"<<i<<endl;
cin>>socios[i];
SocioSaliente.write((char*)&socios[i], sizeof(socios[i]));
i++;
contador_socios=i;
}
else
{
cout<<"Memoria Llena"<<endl;
cout<<endl;
}
Archivo_I_Saliente<<i;
ContadorSociosSaliente<<contador_socios;
}
break;
case 2:
{
fstream SociosEntrantes("socios.dat", ios::in|ios::out|ios::binary);
ifstream ContadorSociosEntrante("contador_socios.dat", ios::in);
ContadorSociosEntrante>>contador_socios;
for(int k=0;k<contador_socios;k++)
{
SociosEntrantes.read((char*)&socios[k], sizeof(socios[k]));
}
cout<<"Digite un numero de socio(Valido de 0 a "<<contador_socios<<")"<<endl;
cin>>numero;
SociosEntrantes.seekp(numero*sizeof(socios[1]), ios::beg);
cout<<"El nombre del socio #"<<numero<<" es de nombre: "<<socios[numero]<<endl;
cout<<endl;
cout<<"Escriba la modificacion de nombre:"<<endl;
cin>>socios[numero];
cout<<endl;
SociosEntrantes.write((char*)&socios[numero], sizeof(socios[1]));
cout<<"Socio Modificado!!"<<endl;
cout<<endl;
}
break;
case 3:
{
fstream SociosEntrantes("socios.dat", ios::in|ios::in|ios::binary);
ifstream ContadorSociosEntrante("contador_socios.dat", ios::in);
ofstream ContadorSociosSaliente("contador_socios.dat", ios::out);
ofstream Archivo_I_Saliente("i.dat", ios::out);
ContadorSociosEntrante>>contador_socios;
for(int j=0;j<contador_socios;j++)
{
SociosEntrantes.read((char*)&socios[j], sizeof(socios[j]));
}
cout<<"Digite un numero de socio(Valido de 0 a "<<contador_socios<<")"<<endl;
cin>>numero;
SociosEntrantes.seekp(numero*sizeof(socios[1]), ios::beg);
cout<<"El nombre del socio #"<<numero<<" es de nombre: "<<socios[numero]<<endl;
cout<<endl;
delete socios[numero];
SociosEntrantes.write((char*)&socios[numero], sizeof(socios[1]));
cout<<"Socio Eliminado!!"<<endl;
cout<<endl;
contador_socios=contador_socios-1;
i=i-1;
ContadorSociosSaliente<<contador_socios;
Archivo_I_Saliente<<i;
}
break;
case 4:
{
ifstream SociosEntrantes("socios.dat", ios::in|ios::binary);
ifstream ContadorSociosEntrantes("contador_socios.dat", ios::in);
ContadorSociosEntrantes>>contador_socios;
for(int i=0;i<contador_socios;i++)
{
SociosEntrantes.read((char*)&socios[i], sizeof(socios[i]));
}
for(int m=0;m<contador_socios;m++)
{
cout<<"Nombre#"<<m<<" : "<<socios[m]<<endl;
}
}
cout<<endl;
break;
}
cout<<"Desea realizar otra accion s/n?"<<endl;
cin>>respuesta;
}
return 0;
}
pero la unica parte que me falla es la opcion 3 del menu, la de borrar, porque trato de borrar el segundo elemento y el que se me borra es el ultimo, y ando fatal con esto de los archivo