Ciao ragazzi, non capisco perchè non vanno le funzioni rename e remove nel momento in cui vengono poste all'interno del mio int nuovo. Se la eseguo come funzione a parte (digitando 2) modifica tranquillamente il mio file b, mentre dal return (digitando 1) mi crea il file copia.
codice:
#include<iostream>
#include<fstream>
#include<stdio.h>
#include<string>
using namespace std;
int nuovo();
int aggiungi();
int modifica();
class libro
{
public:
string titolo="";
int quantita;
};
int main ()
{
int scelta;
aggiungi();
do
{
system("CLS");
cout<<"1.Acquisto";
cout<<"\n2.----";
cout<<"\n3.Esci";
cout<<"\nScegli:";
cin>>scelta;
switch(scelta)
{
case 1:
nuovo();
break;
case 2:
modifica();
break;
} system("PAUSE");
} while(scelta!=3);
cout<<"\n ciao \n";
return 0;
}
int aggiungi()
{
ifstream leggi;
leggi.open("b.txt");
if(leggi==NULL)
{
ofstream salva;
salva.open("b.txt", ios::app);
libro a[4];
a[0].titolo="primo";
a[1].quantita=20;
a[2].titolo="secondo";
a[3].quantita=30;
salva<<a[0].titolo<<endl;
salva<<a[1].quantita<<endl;
salva<<a[2].titolo<<endl;
salva<<a[3].quantita<<endl;
salva.close();
}
}
int nuovo ()
{
libro a;
ofstream salva;
salva.open("b.txt",ios::app);
string nuovo="";
cout<<"\nInserire il nuovo titolo:";
cin>>nuovo;
bool libroSi=false;
ifstream leggi;
leggi.open("b.txt");
while(!leggi.eof())
{
leggi>>a.titolo;
leggi>>a.quantita;
if(a.titolo==nuovo)
{
libroSi=true;
}
}
leggi.close();
if(libroSi==true)
{
cout<<"\nLibro gia presente\n";
return modifica();
}
else
{
int i;
ofstream salva;
salva.open("b.txt", ios::app);
a.titolo=nuovo;
cout<<"\nQuantita:";
cin>>a.quantita;
cout<<"\n----------\n";
salva<<nuovo<<endl;
salva<<a.quantita<<endl;
salva.close();
}
}
int modifica()
{
libro a;
ifstream leggi;
leggi.open("b.txt");
if(leggi)
{
string nuovo="";
cout<<"\nInserire il titolo del libro:";
cin>>nuovo;
ofstream posizioni("posizioni.txt");
int posizione=0;
while(!leggi.eof())
{
leggi>>a.titolo;
leggi>>a.quantita;
posizione++;
if(nuovo==a.titolo)
{
cout<<"\nPosizione:"<<posizione<<endl;
cout<<"\nQuantita:"<<a.quantita<<endl;
posizioni<<posizione<<endl;
}
}
leggi.close();
posizioni.close();
int daMod=0;
cout<<"\nInserire la posizione del libro da inserire:";
cin>>daMod;
ofstream copia("copia.txt");
ifstream leggi("b.txt");
for(int i=0;i<daMod-1;i++)
{
leggi>>a.titolo;
leggi>>a.quantita;
copia<<a.titolo<<endl;
copia<<a.quantita<<endl;
}
leggi>>a.titolo;
leggi>>a.quantita;
int nuovaQuantita;
cout<<"\nQuantita da aggiungere:";
cin>>nuovaQuantita;
int nuovaDisp;
nuovaDisp=nuovaQuantita+a.quantita;
a.quantita=nuovaDisp;
copia<<a.titolo<<endl;
copia<<nuovaDisp<<endl;
while(!leggi.eof())
{
leggi>>a.titolo;
if(a.titolo!="")
{
leggi>>a.quantita;
copia<<a.titolo<<endl;
copia<<a.quantita<<endl;
}
}
leggi.close();
copia.close();
}else
cout<<"\nFile non trovato!";
remove("b.txt");
rename("copia.txt","b.txt");
}