Forse è questo che intendevi?Originariamente inviato da oregon
Il controllo lo devi fare *dopo* che esegui la open.
Che senso ha fare il controllo se il programma non conosce ancora il nome del file da aprire?
Il risultato è che crea il file pwd.txt ma quando si riavvia il programma entra sempre nell'if, come se il file non esistesse, ripetendo il primo avvio...codice:fs.open("pwd", ios::binary); if(!fs){ fs.open("pwd", ios::out | ios::binary); cout<< "PRIMO AVVIO\nInserire una password di massimo 10 caratteri. Affinche' essa sia difficilmente individuabile inserite numeri e caratteri maiuscoli o minuscoli." << endl; do{ cout<< endl << "Inserire password amministratore: "; cin>> pwd1; cout<< "conferma password: "; cin>> pwd2; if(strcmp(pwd1, pwd2) != 0){cout<< endl << "Conferma password fallita. Ripetere l'inserimento" << endl << endl;} }while(strcmp(pwd1, pwd2) != 0); cout<< endl << "Password accettata. Conservare la password poiche' sara' impossibile recuperarla senza perdite di dati." << endl << endl; fs.write((char*)&pwd1,sizeof(pwd1)); fs.close(); return 0; } else{ fs.open("pwd", ios::in | ios::binary); fs.read((char*)&pwd1, sizeof(pwd1)); cout<< "CONTROLLO SICUREZZA"<< endl; for(i=2; i>=0; i--){ cout<< endl << "Password Amministratore: "; cin>> pwd2; if(strcmp(pwd1, pwd2) != 0) cout<< endl << "Password errata. Tentativi restanti "<< i << endl; else break; if(i == 0) return 1; } return 0;![]()

Rispondi quotando