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"); }

Rispondi quotando