raga, ho un problema con questo programma RUBRICA, quando inserisco '5' per modificare un contatto.
Bhe fino ad adesso ho previsto il caso in cui, si voglia modificare solo il nome.
Ecco il codice:
codice:
# include <iostream>
# include <windows.h>
# include <string.h>
# include <fstream>
using namespace std;
string nome, cogn, numero, mail, modif;
string linea;
long pos;
int i;
void acquis_scritt(ofstream &write);
void leggi_stampa();
int conta_righe();
int main()
{
int scelta,rigaFile,colon,Nrighe;
char ok;
cout << "RUBRICA telefonica\n"<<endl;
while (scelta!=6)
{
cout << "1) Inizia Rubrica " << endl;
cout << "2) Aggiungi Contatti " << endl;
cout << "3) Visualizza contatti " << endl;
cout << "4) Elimina Rubrica " << endl;
cout << "5) Modifica contatti" << endl;
cout << "6) Esci" << endl;
cin >> scelta;
if (scelta==1)
{
ofstream write("Rubrica.txt",ios::out);
write << "NOME";
write.seekp (20, ios_base::beg);
write <<"COGNOME";
write.seekp (40, ios_base::beg);
write <<"NUMERO";
write.seekp (52, ios_base::beg);
write <<"E-MAIL"<<endl;
acquis_scritt(write);
write.close();
}
if (scelta==2)
{
ofstream write("Rubrica.txt",ios::app);
acquis_scritt(write);
write.close();
}
if (scelta==3)
{
leggi_stampa();
}
if (scelta==4)
{
cout << "Sei sicuro di voler eliminare la rubrica? (s/n)" << endl;
cin >> ok;
if (ok=='s' || ok=='S')
{
ofstream remove("Rubrica.txt");
remove.close();
cout << "Rubrica Eliminata!! "<<endl;
}
}
if (scelta==5)
{
leggi_stampa();
cout << "Inserisci la riga da modificare = ";
cin >> rigaFile;
cout << "Inserisci '1' per modificare il nome" << endl;
cout << "Inserisci '2' per modificare il cognome" << endl;
cout << "Inserisci '3' per modificare il numero" << endl;
cout << "Inserisci '4' per modificare l' e-mail" << endl;
cin >> colon;
cout << "Scrivi la parola modificata = ";
cin >> modif;
fstream r_w;
r_w.open("Rubrica.txt", ios::in | ios::out);
if(r_w)
{
for(i=1;i<=rigaFile;i++)
r_w >> linea;
}
switch (colon)
{
case 1:
modif.resize(20);
r_w << modif;
break;
}
}
if (scelta!=3)
system("CLS");
}
cout << "Sei uscito dal programma." <<endl;
system("PAUSE");
}
//------------------------------------------------------------------------------
void acquis_scritt(ofstream &write)
{
cout << "Inserisci nome:"<<endl;
cin >> nome;
nome.resize(20);
write << nome;
cout << "Inserisci cognome:"<<endl;
cin >> cogn;
cogn.resize(20);
write << cogn;
cout << "Inserisci numero:"<<endl;
cin >> numero;
numero.resize(12);
write << numero;
cout << "Inserisci e-mail:"<<endl;
cin >> mail;
mail.resize(35);
write << mail << endl;
}
//------------------------------------------------------------------------------
void leggi_stampa()
{
system("CLS");
int rig = conta_righe();
ifstream read("Rubrica.txt");
if(read)
{
for(i=1;i<=rig;i++)
{
read >> linea;
cout << linea <<endl;
}
}
read.close();
}
//------------------------------------------------------------------------------
// CONTA RIGHE
int conta_righe()
{
fstream file;
string s;
int contarighe=0;
file.open("Rubrica.txt",ios::in);
if(file)
{
while(!file.eof())
{
getline(file,s,'\n');
contarighe++;
}
}
return contarighe-1;
}
il programma non mi da nessun errore di compilazione (e di esecuzione).
dopo che ho inserito '5' e poi il 'nome modificato', non mi scrive niente sul file.