Hola que tal, gracias por responder. La verdad no tengo mucha experiencia en c y con lo que te entendí modifique así mi código, pero siempre me sale que inicie sesión correctamente. Si me puedieras ayudar a corregir esto te lo agradecería demasiado. Saludos
Código C++:
Ver original#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
class Empleado {
public:
Empleado();
void registrar();
void iniciar_sesion( char *, char * );
bool estado();
private:
bool flag_session_status;
char usuario[ 22 ], contrasena[ 22 ];
} e;
Empleado::Empleado() {
flag_session_status = 0;
}
bool Empleado::estado() {
return flag_session_status;
}
void Empleado::registrar() {
int bandera = 0;
char comprobar_usuario[ 22 ];
ifstream leer_empleados( "empleados.txt", ios::in | ios::app );
if( leer_empleados.fail() ) {
cout << "\nError al leer el archivo empleados.txt" << endl;
} else {
cout << "Usuario: "; cin >> comprobar_usuario;
while( !leer_empleados.eof() ) {
leer_empleados.read( (char*)&e, sizeof( e ) );
if(leer_empleados.eof()) {
break;
}
if( strcmp( usuario
, comprobar_usuario
) == 0 ) { bandera = 1;
}
}
leer_empleados.close();
if( bandera == 1 ) {
cout << "\nEl nombre de usuario ya esta en uso" << endl;
} else {
ofstream escribir_empleados( "empleados.txt", ios::binary | ios::app );
strcpy( usuario
, comprobar_usuario
); cout << "Contraseña: "; cin >> contrasena;
escribir_empleados.write( (char *) &e, sizeof( e ) );
escribir_empleados.close();
}
}
}
void Empleado::iniciar_sesion( char comprobar_usuario[ 22 ], char comprobar_contrasena[ 22 ] ) {
int bandera = 0, opcion;
ifstream leer_empleados( "empleados.txt", ios::in );
if( leer_empleados.fail() ) {
cout << "\nError al leer el archivo empleados.txt" << endl;
} else {
while( !leer_empleados.eof() ) {
leer_empleados.read( (char*)&e, sizeof( e ) );
if(leer_empleados.eof()) {
break;
}
if( strcmp( usuario
, comprobar_usuario
) == 0 ) { if( strcmp( contrasena
, comprobar_contrasena
) == 0 ) {
flag_session_status = 1;
}
}
}
leer_empleados.close();
}
}
main() {
char comprobar_usuario[ 22 ], comprobar_contrasena[ 22 ];
cout << "NOMBRE DE USUARIO: "; cin >> comprobar_usuario;
cout << "CONTRASEÑA: "; cin >> comprobar_contrasena;
e.iniciar_sesion( comprobar_usuario, comprobar_contrasena );
if( e.estado() == 1 ) {
cout << "\nSe ha iniciado sesion correctamente" << endl;
} else {
cout << "\nError al iniciar sesion" << endl;
}
return 0;
}