[ Foro de C++ ]
Necesito en la funcion Buscar_Usuarios, buscar el usuario ingresado y mostrar su datos pero no me sale por nada del mundo ya intente todo nose que esta mal pueden ayudarme porfavor
#include <locale.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
/*Estructuras UwU*/
struct registroUsuarios{
unsigned long nroCuenta;
char nombreUsuario[80];
char patente[10];
unsigned long saldo;
}Usuario;
typedef struct registroUsuarios Usuarios;
struct recargasUsuarios{
int nroControl;
unsigned long nroCuenta;
unsigned long monto;
unsigned long saldoPrevio;
char fecha[6];
char hora[6];
}UsuarioRecargas;
/*Titulo del Programa*/
void tituloPrincipal();
/*Menú principal del Programa*/
int menuPrincipal();
/*Prototipado de Funciones*/
void Registrar_Usuarios ();
void Buscar_Usuarios();
void Recargas_Usuarios();
char existeUsuario(int nroCuenta, Usuarios *registroUsuarios);
char insertarUsuario(Usuarios registroUsuarios);
int main (){
setlocale(LC_ALL, "spanish");
int x;
do{
x = menuPrincipal();
switch (x){
case 1: Registrar_Usuarios();
break;
case 2: Recargas_Usuarios();
break;
case 3: Buscar_Usuarios();
break;
}
}while(x != 7);
return 0;
}
void Recargas_Usuarios(){
FILE * Usuarios_recargas;
char repite = 0;
char respuesta[1];
int i=0;
do {
system("cls");
tituloPrincipal();
printf("\n\t\t\t\t ==> RECARGA DE CREDITO <==\n");
printf ("\n\t\t\t\tNº control: %i",i);
printf ("\n\n\t\t\t\tNúmero de cuenta: ");
scanf ("%u",&UsuarioRecargas.nroCuenta);
printf ("\n\t\t\t\tMonto a cargar (MINIMO $100): "); //Crear comprobación en donde si el usuario ingresa monto<100 escriba en pantalla "Sos boludo o no sabes leer"
scanf ("%u",&UsuarioRecargas.monto);
UsuarioRecargas.saldoPrevio=(Usuario.saldo+UsuarioRecargas.monto);
printf ("\n\t\t\t\tFecha (Dia/Mes/Año): ");
scanf ("%s",&UsuarioRecargas.fecha);
printf ("\n\t\t\t\tHora: ");
scanf ("%s",&UsuarioRecargas.fecha);
//printf("%u",UsuarioRecargas.saldoPrevio); NO FUNCIONA COMO DEBERÍA
if ((Usuarios_recargas = fopen("recargas.dat","ab")) != NULL){
fwrite (&UsuarioRecargas,sizeof(UsuarioRecargas),1,Usuarios_recargas);
fclose(Usuarios_recargas);
}else
printf ("Error de apertura de archivo");
printf("\n\t\t\t\tDesea recargar el crédito de otro usuario? [S/N]: ");
scanf("%s",&respuesta);
if (!(strcmp(respuesta, "S") == 0 || strcmp(respuesta, "s") == 0)) {
repite = 1;
}
i++;
}while (repite==0);
}
char existeUsuario(int nroCuenta, Usuarios *registroUsuarios){
FILE *archivo;
char existe;
/* Abre el archivo en modo lectura */
archivo = fopen("usuarios.dat", "rb");
if (archivo == NULL) { /* Si no se pudo abrir el archivo, el valor de archivo es NULL */
existe = 0;
} else {
existe = 0;
/* Se busca el usuario cuyo código coincida con nroCuenta (celular del usuario) */
fread(&(*registroUsuarios), sizeof(*registroUsuarios), 1, archivo);
while (!feof(archivo)){
if ((*registroUsuarios).nroCuenta == Usuario.nroCuenta) { //Hace la comprobación
existe = 1;
break;
}
fread(&(*registroUsuarios), sizeof(*registroUsuarios), 1, archivo);
}
/* Cierra el archivo */
fclose(archivo);
}
return existe;
}
char insertarUsuario(Usuarios registroUsuarios){
FILE *archivo;
char insercion;
/* Abre el archivo para agregar datos al final */
archivo = fopen("usuarios.dat", "ab"); /* Añade datos al final. Si el archivo no existe, es creado */
if (archivo == NULL) { /* Si no se pudo abrir el archivo, el valor de archivo es NULL */
insercion = 0;
}
else {
fwrite(®istroUsuarios, sizeof(registroUsuarios), 1, archivo);
insercion = 1;
/* Cierra el archivo */
fclose(archivo);
}
return insercion;
}
void Registrar_Usuarios(){
FILE * Usuarios_registrados;
Usuarios registroUsuarios;
int nroCuenta=0;
char repite = 0;
char respuesta[1];
do {
system("cls");
tituloPrincipal();
printf("\n\t\t\t\t ==> REGISTRO DE USUARIOS <==\n");
printf ("\n\t\t\t\tIngrese el número de celular del usuario: ");
scanf ("%u",&Usuario.nroCuenta);
if (!existeUsuario(nroCuenta, ®istroUsuarios)){
//registroUsuarios.nroCuenta = nroCuenta;
getchar();
printf ("\n\t\t\t\tIngrese su nombre completo: ");
scanf ("%s",&Usuario.nombreUsuario);
printf ("\n\t\t\t\tIngrese la patente de su automovil: ");
scanf ("%s",&Usuario.patente);
//printf ("Ingresar el saldo");
//scanf ("%u",&Usuario.saldo);
Usuario.saldo=50; //Inicializa en 50$ para motivar al usuario a descargarse la app y tener 1HS de estacionamiento gratuito, y así poder controlar a la población con un Malware
if ((Usuarios_registrados = fopen("usuarios.dat","ab")) != NULL){
fwrite (&Usuario,sizeof(Usuario),1,Usuarios_registrados);
fclose(Usuarios_registrados);
}else
printf ("Error de apertura de archivo");
/* Se inserta al usuario en el archivo */
if (insertarUsuario(registroUsuarios)) {
printf("\n\t\t\t\tEl usuario fue agregado correctamente.\n");
} else {
printf("\n\tOcurrió un error al intentar agregar el usuario.\n");
}
} else {
/* El usuario ya existe, no puede ser insertado. */
printf("\n\t\t\t\tHa ingresado un usuario ya existente\n");
}
printf("\n\t\t\t\tDesea seguir registrando usuarios? [S/N]: ");
scanf("%s",&respuesta);
if (!(strcmp(respuesta, "S") == 0 || strcmp(respuesta, "s") == 0)) {
repite = 1;
}
} while (repite==0);
//ANULANDO MOSTRAR USUARIOS
//Esto debe ser una funcionMostrarUsuario(); o funcionBuscarUsuario();
//Estado == funcionando
/*
if ((Usuarios_registrados = fopen("usuarios.dat","rb")) != NULL){
fread (&Usuario,sizeof(Usuario),1,Usuarios_registrados);
while (!feof(Usuarios_registrados)){
printf ("%u\n",Usuario.nroCuenta);
puts (Usuario.nombreUsuario);
puts (Usuario.patente);
printf ("%u",Usuario.saldo);
fread (&Usuario,sizeof(Usuario),1,Usuarios_registrados);
}
fclose (Usuarios_registrados);
} else printf ("Error de apertura de archivo");
*/
}
int menuPrincipal(){
int x;
system("cls");
tituloPrincipal();
printf("\n\t\t\t\t\t\tMENU PRINCIPAL\n");
printf("\n\t\t\t\t[1]. Carga de Usuarios.\n");
printf("\t\t\t\t[2]. Carga de Crédito.\n");
printf("\t\t\t\t[7]. Salir\n");
printf("\n\t\t\t\tIngrese su opción: [ ]\b\b");
scanf("%d",&x);
return x;
}
void tituloPrincipal(){
int i;
printf("\n .==============================================.\n");
printf("\t\t\t\t | Sistema de Estacionamiento Medido (SEM) |\n");
printf("\t\t\t\t | Version: 1.0.3 BETA TEST |\n");
printf("\t\t\t\t | Copyright 2020 | Miche,LS,amumu |\n");
printf(" .==============================================.\n");
i = 0;
putchar('\n');
for (; i < 120; i++) {
putchar('_');
}
}
void Buscar_Usuarios(){
FILE * Usuarios_registrados;
char nombre_Usuario[80];
int existe = 0;
printf ("Ingrese el usuario a buscar");
scanf ("%s",nombre_Usuario);
if ((Usuarios_registrados = fopen("Usuarios.dat","r+b")) != NULL){
fread (&Usuario,sizeof(Usuario),1,Usuarios_registrados);
while (!feof(Usuarios_registrados)){
if (nombre_Usuario==Usuario.nombreUsuario){
printf ("%s %u %s %u",Usuario.nombreUsuario, Usuario.nroCuenta, Usuario.patente, Usuario.saldo);
existe = 1;
fread (&Usuario,sizeof(Usuario),1,Usuarios_registrados);
}
}if (existe == 0) printf ("El usuario ingresado no existe");
fclose (Usuarios_registrados);
} else printf ("Error de apertura de archivo");
}
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)