elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con Archivos
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con Archivos  (Leído 6,456 veces)
jscrip

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Ayuda con Archivos
« en: 4 Febrero 2013, 07:57 am »

Hola amigos, necesito me ayuden con unos problemas que tengo en mi programa, no entiendo por qué no funciona:
Ingresar al Sistema.
Se pide por teclado que ingrese el usuario y luego la contraseña, se compara con lo que hay en el archivo accesobanco.text; de existir dicho usuario/contraseña, se muestra mensaje: “acceso exitoso”.
Si no existe el usuario, se muestra mensaje: “usuario incorrecto”.
Si la contraseña es equivocada, se muestra mensaje: “contraseña incorrecta”. Si la contraseña digitada no es correcta, se da la oportunidad de volver a ingresar la contraseña, si en 3 oportunidades falla al ingresar la contraseña, se bloquea el acceso al sistema para ese usuario en este momento.

Código:
void ingresarsistema()
{
FILE *p;
char S1[9], S2[5], ch;
char user[9], pass[5], tmp[5];
int f1=0, i;
p = fopen("accesobanco.txt", "r");
printf("User: ");
scanf("%s", user);
printf("\nPassword: ");
fflush(stdin);
scanf("%s", pass);
while(!feof(p))
{
fscanf(p, "%[^,], %[^\n]\n", S1, S2);
if(strcmp(user, S1) == 0) /*Se compara cadenas de usuarios*/
{
f1=1;
strcpy(tmp, S2);
if(strcmp(pass, S2) == 0) /*Se compara cadenas de contraseñas*/
{
printf("\nAcceso Exitoso\n");
return;
}
}
if(f1 == 0)
{
printf("\nUsuario Incorrecto\n");
}
else
{
printf("\nContraseña Incorrecta");
for(i=0; i<2; i++)
{
printf("\nVuelva a ingresar la contrasenia: ");
fflush(stdin);
scanf("%s", pass);
{
printf("\nAcceso Exitoso\n");
return;
}
}
printf("\nEl sistema ha sido bloqueado\n");
}
}
fclose ( p );
}

Agradecería mucho su ayuda.


En línea

Maik33

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Re: Ayuda con Archivos
« Respuesta #1 en: 4 Febrero 2013, 09:05 am »

¿Que problema tienes?

Acabo de hacer una prueba y funciona bien. Lo único que no funciona son lo de las 3 oportunidades. ¿Tienes el problema con eso?


En línea

jscrip

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Ayuda con Archivos
« Respuesta #2 en: 4 Febrero 2013, 09:10 am »

¿Que problema tienes?

Acabo de hacer una prueba y funciona bien. Lo único que no funciona son lo de las 3 oportunidades. ¿Tienes el problema con eso?
Exacto, no me funcionan las 3 oportunidades.
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Ayuda con Archivos
« Respuesta #3 en: 4 Febrero 2013, 10:35 am »

Código
  1. for(i=0; i<2; i++)
  2. {
  3.    printf("\nVuelva a ingresar la contrasenia: ");
  4.    fflush(stdin);
  5.    scanf("%s", pass);
  6.    {
  7.        printf("\nAcceso Exitoso\n");
  8.        return;
  9.    }
  10. }
  11.  
No falta aquí un if?
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Maik33

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Re: Ayuda con Archivos
« Respuesta #4 en: 4 Febrero 2013, 10:38 am »

Si, cuando lees la contraseña por segunda vez, no comparas con nada, y por eso siempre te da "Acceso Exitoso".
En línea

jscrip

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Ayuda con Archivos
« Respuesta #5 en: 4 Febrero 2013, 10:50 am »

Código
  1. for(i=0; i<2; i++)
  2. {
  3.    printf("\nVuelva a ingresar la contrasenia: ");
  4.    fflush(stdin);
  5.    scanf("%s", pass);
  6.    {
  7.        printf("\nAcceso Exitoso\n");
  8.        return;
  9.    }
  10. }
  11.  
No falta aquí un if?
un error mío al subir el codigo y borrar comentarios:
Código
  1. for(i=0; i<2; i++)
  2. {
  3.    printf("\nVuelva a ingresar la contrasenia: ");
  4.    fflush(stdin);
  5.    scanf("%s", pass);
  6.    if(strcmp(pass, tmp) == 0);
  7.    {
  8.        printf("\nAcceso Exitoso\n");
  9.        return;
  10.    }
  11. }
  12.  
con ese if lo tengo y no funciona
En línea

Maik33

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Re: Ayuda con Archivos
« Respuesta #6 en: 4 Febrero 2013, 14:11 pm »

Ya he encontrado el fallo.

Código
  1. if(strcmp(pass, tmp) == 0);
  2.   {
  3.       printf("\nAcceso Exitoso\n");
  4.       return;
  5.   }

En la comparacion tienes:
if(strcmp(pass,tmp)==0);

El punto y coma, hace que siempre se ejecute lo que hay despues del if.
En línea

jscrip

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Ayuda con Archivos
« Respuesta #7 en: 4 Febrero 2013, 15:48 pm »

Ya he encontrado el fallo.

Código
  1. if(strcmp(pass, tmp) == 0);
  2.   {
  3.       printf("\nAcceso Exitoso\n");
  4.       return;
  5.   }

En la comparacion tienes:
if(strcmp(pass,tmp)==0);

El punto y coma, hace que siempre se ejecute lo que hay despues del if.
era de madrugada, disculpen, los subí mal, pero en mi programa si lo tengo sin el ; en cuanto a sintaxis creo que esta correcto, pero aun así no funciona
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Ayuda con Archivos
« Respuesta #8 en: 4 Febrero 2013, 16:06 pm »

Al observar tu código me di cuenta que haces fflush al flujo de entrada, pásate por los siguientes enlaces:

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Documentación de fflush

http://linux.die.net/man/3/fflush
En línea

jscrip

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Ayuda con Archivos
« Respuesta #9 en: 4 Febrero 2013, 16:44 pm »

Al observar tu código me di cuenta que haces fflush al flujo de entrada, pásate por los siguientes enlaces:

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Documentación de fflush

http://linux.die.net/man/3/fflush
De hecho el programa lo hice en linux, al pasarlo a windows le puse el fflush, de todas manera si lo quito o borro el buffer con while(getchar()!='\n'); el programa sigue sin funcionar.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con archivos ASF y WMV
Multimedia
dama 1 2,049 Último mensaje 7 Diciembre 2004, 20:19 pm
por Songoku
AYUDA:ARCHIVOS BIN Y CUE
Software
Kasswed 1 9,561 Último mensaje 8 Enero 2005, 01:51 am
por el-brujo
Ayuda con archivos .ape y .cue
Multimedia
josocli 1 2,137 Último mensaje 1 Febrero 2005, 10:40 am
por Songoku
ayuda con archivos nsv
Multimedia
darkwakko 1 2,201 Último mensaje 22 Junio 2006, 20:30 pm
por Sourraund
ayuda archivos wmv
Multimedia
raulll 3 2,409 Último mensaje 28 Septiembre 2006, 09:36 am
por Sourraund
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines