Aiuto con programminio per salvare password

di il
8 risposte

Aiuto con programminio per salvare password

Vi allego il codice, (tralasciate i goto e il fatto che sia tutto globale messo solo per risparmiare un po di tempo poi sistemerò), funziona la parte di aggiungere account in lista e il di visualizzali ma non riesco a modificarli, ci sarà qualche errore nel codice o qualcosa che manca, grazie in anticipo
#include<iostream>
#include<fstream>
#include<string.h>
#include <stdio.h>
using namespace std;
int indice();
void modifica();
void lista();
void inserisci();
struct account{
	int indice;
	char nsito[50];
	char nutente[20];
	char psw[30];
};
struct account nuovo;
ofstream of;
	ifstream ifs;
int main () {
	int ctrl,scelta;
	char sbagliato, menu, mod;
	string psw;
	sbagliato:
	cout<<"inserisci la password:";            // psw per acceddere al programma
	cin>>psw;    
	if(psw!="password"){
		cout<<"password sbagliata!!!!!! riprovare"<<endl;
		goto sbagliato;
	}
	menu:
	system("cls");                                                            //menu
		cout<<"benvenuto in gestione psw, cosa vuoi fare?\n";
		cout<<" 1) visualizzare| modificare gli account in memoria \n";
		cout<<" 2) aggiungere un nuovo account\n";
		cout<<" 3) uscire \n";
		cout<<" digitare 1 2 o 3 e premere invio! :";
		cin>> scelta;
		if (scelta==1) {
			
		lista();
		cout<<"vuoi modificare un account?(s=modifica/n=menu)"<<endl;
		cin>>mod;
		if(mod=='s')
		modifica();
		else if(mod=='n')
		goto menu;
					   }else if (scelta==2){
					   
	
do{

			  nuovo.indice=indice();
				cout<<"inserisci nome del sito(senza spazi): ";
				cin>>nuovo.nsito;
				cout<<"\n inserisci nome utente: ";
				cin>>nuovo.nutente;
				cout<<"\n inserisci la password del sito: ";
				cin>>nuovo.psw;	
				ofstream of("pswww.txt", ios::app| ios::out | ios::binary);
				of.write((char *) &nuovo, sizeof(struct account));
				
				cout<<"\n inserire un altro account?(1=si/2=menu):";
				cin>>ctrl;
				}while(ctrl!=2);
				of.close();
				goto menu;
			}
				
					
return 0;	

}
int indice(){   // assegno un idice il primo non riesco a farlo uscire con 1 il resto va bene, quindi in caso forzo il primo e il resto li prende bene
	int a;
	ifstream ifs("pswww.txt", ios::in | ios::binary);
				
				while(ifs.read((char *) &nuovo, sizeof(struct account))){
	
	a=nuovo.indice+1;
	
}
if(a<1) a=1;
return a;
}

void modifica(){   // qui c'è il problema da qualche parte, o manca un pezzo di codice anche se a me sembra giusto
	int tempindice, scelta;
	cout<<"digitare l'indice dell'account da modificare"<<endl;
	cin>>tempindice;
	ifstream ifs("pswww.txt", ios::in | ios::binary);
	ofstream of("pswww.txt", ios::out | ios::binary);
	
				
				while(ifs.read((char *) &nuovo, sizeof(struct account)))
					if(tempindice==nuovo.indice){									
						cout<<nuovo.indice<<") "<<nuovo.nsito<<" -- "<<nuovo.nutente<<" -- "<<nuovo.psw<<endl;
						cout<<"cosa vuoi modificare?(1=nome sito, 2=nome utente, 3=password)"<<endl;
						cin>>scelta;
						if(scelta==1){
							cout<<"nuovo nome sito : ";
							cin>>nuovo.nsito;
						}else if(scelta==2){
							cout<<"nuovo nome utente : ";
							cin>>nuovo.nutente;
						}else if(scelta==3){
							cout<<"nuova password: ";
							cin>>nuovo.psw;
								
						}
						of.write((char *) &nuovo, sizeof(struct account));						
					} 
	ifs.close();
	of.close();

}
void lista(){  // visualizzo lista
	ifstream ifs("pswww.txt", ios::in | ios::binary);
				
				while(ifs.read((char *) &nuovo, sizeof(struct account))){
					
					cout<<nuovo.indice<<") "<<nuovo.nsito<<" -- "<<nuovo.nutente<<" -- "<<nuovo.psw<<endl;
				}
				ifs.close();
	
	
}

8 Risposte

  • Re: Aiuto con programminio per salvare password

    Se sei così generico e lasci tutto agli altri, nessuno risponderá.

    Chiarisci cosa fai e cosa succede, circoscrivi più o meno la parte di codice che sospetti, dai una tua possibile spiegazione...
  • Re: Aiuto con programminio per salvare password

    Mi sembra di essere stato chiaro, il problema e nella zona modifica, il resto funziona, in pratica dal momento che assegno un indice ad ogni account 1-2-3-4 ecc, la mia idea era, una volta visualizzata la la lista tipo:
    1) http://www.inps.i -- nutente -- psw
    2)www.cheneso.i -- nutente --psw
    ecc...
    l'utente inserisce il l'indice corrispondente per accedere a quel determinato record, e successivamente modificarlo.
    allego screen, mi si blocca appena inserisco l'indice per la modifica(il pezzo di codice corrisponde alla funzione void modifica()sopra riportata)
    Allegati:
    15442_7270935ae40512d16754bd16684b4366.png
    15442_7270935ae40512d16754bd16684b4366.png
  • Re: Aiuto con programminio per salvare password

    Ps mi cancella tutto quello che ho salvato sul file dopo averlo lanciato, se provate a compilarlo e eseguirlo magari capite meglio
  • Re: Aiuto con programminio per salvare password

    Se l'ho chiesto vuol dire che non eri stato chiaro. Non sempre si può o si vuole prendere tutto il codice compilarlo e copiarlo.

    Nell'immagine che hai mostrato mi sembra che gli elementi comincino con indice 2)
    È corretto?
  • Re: Aiuto con programminio per salvare password

    Si avevo qualche problema con quello, in quanto la funzione che assegna l'indice vede l'indice precedente e gli aggiunge 1, non essendoci un indice precedente il primo giro crea qualche problema, ma lo aggiro forzando il primo indice ad 1 e il resto andrà bene da solo, in questo caso non lo fatto solo per provare ,ma non credo sia questo il problem, logicamente funziona,sarebbe:apro il file->seleziono un indice-> leggo il file- comparo l'indice selezionato con quelli della mia lista->una volta trovato si posiziona sul record corretto-> lo modifico->riscrivo il record nella stessa posizione->chiudo il file. bisogna vedere se la traduzione in C++ di questo sia corretta ^-^
  • Re: Aiuto con programminio per salvare password

    Puoi controllare con una printf i valori dell'indice letti da file
  • Re: Aiuto con programminio per salvare password

    Allora risolto quel problema, ho aggiunto la funzione cerca che funziona ma mi manda in loop stampando continuamente il record cercato.......aiutino? sintatticamente è corretto? in teoria quando il puntatore trova qualcosa dovrebbe stamparmelo col cout e poi uscire dal ciclo ma invece ci rimane
    void cerca(){
    	char sito[50];
    	int i;
    	char * pch;
    					cout<<"inserisci in nome del sito da cercare:"<<endl;
    					cin>>sito;
    		ifstream ifs("pswww.txt", ios::in | ios::binary);
    				
    				while(ifs.read((char *) &nuovo, sizeof(struct account))){
    					
    					
    					while((pch=strstr(nuovo.nsito,sito))!=NULL){
    						cout<<"trovato: "<<nuovo.indice<<") "<<nuovo.nsito<<" -- "<<nuovo.nutente<<" -- "<<nuovo.psw<<endl;
    					}
    					
    					
    				}
    				ifs.close();
    }
    
  • Re: Aiuto con programminio per salvare password

    Risolto aggiungendo un break......
     while((pch=strstr(nuovo.nsito,sito))!=NULL){
                      cout<<"trovato: "<<nuovo.indice<<") "<<nuovo.nsito<<" -- "<<nuovo.nutente<<" -- "<<nuovo.psw<<endl;
                          break;
                   }
Devi accedere o registrarti per scrivere nel forum
8 risposte