Visualizzazione dei risultati da 1 a 1 su 1
  1. #1

    [C++] Problema con comando Rename e Remove per file!

    Buonasera ragazzi,
    ho creato questo programma che se inserisce in un ipotetico scaffale una serie di libri che acquisto e se ci sono libri con titolo uguale ne aumenta la quantità, in caso contrario aggiunge il libro e basta. Bene il mio problema consiste nel fatto che mi cambia la quantità nel mio file "copia" (usato nella modifica della quantità) ma non nel file principale ("a.txt"), nonostante nella funzione in cui modifico ho utilizzato correttamente i comandi rename e remove.

    codice:
    #include<iostream>
    #include<fstream>
    #include<stdio.h>
    
    
    using namespace std;
    
    
    int nuovo();
    int modifica();
    
    
    class scaffale
    {
    	public:
    	string titolo="";
    	int quantita;
    	
    	
    };
    
    
    
    
    int main()
    {
    	int scelta;
    	do
    	{
    		system("CLS");
    		cout<<"\n1.Inserire Libro";
    		cout<<"\n2.-----";
    		cout<<"\n3.-----";
    		cout<<"\n4.Esci"<<endl;
    		
    		cout<<"\nOperazione da eseguire:";
    		cin>>scelta;
    		
    		switch(scelta)
    		{
    			case 1:
    				nuovo();
    				break;
    			case 2:
    			
    				break;
    			case 3:
    				break;
    		} system("PAUSE");
    		
    	} while(scelta!=4);
    	cout<<"\nGrazie per aver usato il programma!\n"<<endl;
    	return 0;
    	
    }
    
    
    int nuovo()
    {
    
    
    	ofstream salva;
    	salva.open("a.txt",ios::app);
    	
    	scaffale a;
    	
    	string nuovo="";
    	cout<<"\nInserire il titolo del libro da inserire:";
    	cin>>nuovo;
    	
    	bool libroSi=false;
    	ifstream leggi;
    	leggi.open("a.txt");
    	
    	
    	while(!leggi.eof())
    	{
    		leggi>>a.titolo;
    		leggi>>a.quantita;
    		
    		if(a.titolo==nuovo)
    		{
    			libroSi=true;
    		 	
    		}
    		
    	}
    	leggi.close();
    	
    	if(libroSi==true)
    	{
    		
    		 modifica();
    		
    	}
    		 
    	else
    	{
    		ofstream salva;
    		salva.open("a.txt",ios::app);
    
    
    		
    		a.titolo=nuovo;
    		cout<<"\nQuantita:";
    		cin>>a.quantita;
    				
    		salva<<a.titolo<<endl;
    		salva<<a.quantita<<endl;
    				
    		salva.close();
    	}
    
    
    }
    
    
    int modifica()
    {
    	scaffale a;
    	ifstream leggi;
    	leggi.open("a.txt");
    	
    	ofstream posizioni("posizioni.txt");
    	int posizione=0;
    	
    	string titoloCercato="";
    	cout<<"\nLIBRO PRESENTE\n";
    	cout<<"\nReinserire titolo da aggiungere:";
    	cin>>titoloCercato;
    	
    	while(!leggi.eof())
    	{
    		leggi>>a.titolo;
    		leggi>>a.quantita;
    		
    		posizione++;
    		
    		if(titoloCercato==a.titolo)
    		{
    			cout<<"\nTrovato nella posizione:"<<posizione<<endl;
    			cout<<"\nQuantita:"<<a.quantita<<endl;
    			
    			posizioni<<posizione<<endl;
    		}
    	}
    	leggi.close();
    	posizioni.close();
    	
    	int daModificare=0;
    	cout<<"\nInserire la poszione del libro di cui modificare la quantita:";
    	cin>>daModificare;
    	
    	ofstream copia("copia.txt");
    	leggi.open("a.txt");
    	
    	for(int i=0; i<daModificare-1; i++)
    	{
    		leggi>>a.titolo;
    		leggi>>a.quantita;
    		
    		copia<<a.titolo<<endl;
    		copia<<a.quantita<<endl;
    	}
    	
    	leggi>>a.titolo;
    	leggi>>a.quantita;
    	
    	 int quantitaDaAgg;
    	 int nuovaQuant;
    	 
    	 cout<<"Inserire quantita:";
    	 cin>>quantitaDaAgg;
    	 
    	 nuovaQuant=quantitaDaAgg+a.quantita;
    	 a.quantita=nuovaQuant;
    	 
    	copia<<a.titolo<<endl;
    	copia<<a.quantita<<endl;
    	
    	while(!leggi.eof())
    	{
    		scaffale a;
    		leggi>>a.titolo;
    		
    		if(a.titolo!="")
    		{
    			
    			leggi>>a.quantita;
    			
    			copia<<a.titolo<<endl;
    			copia<<a.quantita<<endl;
    		}
    	}
    	 leggi.close();
    	 copia.close();
    	
    	remove("a.txt");
    	rename("copia.txt","a.txt");
    	
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    All'inizio della funzione

    nuovo

    queste righe

    codice:
        ofstream salva;
        salva.open("a.txt",ios::app);
    
    a che servono?

    Non sono mai utilizzate e sono anche dannose ...
    Ultima modifica di oregon; 30-10-2016 a 22:07
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.