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?
Forse è questo che intendevi?

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;
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...