Título: Ayuda con Archivos Publicado por: jscrip 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() Agradecería mucho su ayuda. Título: Re: Ayuda con Archivos Publicado por: Maik33 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? Título: Re: Ayuda con Archivos Publicado por: jscrip en 4 Febrero 2013, 09:10 am ¿Que problema tienes? Exacto, no me funcionan las 3 oportunidades.Acabo de hacer una prueba y funciona bien. Lo único que no funciona son lo de las 3 oportunidades. ¿Tienes el problema con eso? Título: Re: Ayuda con Archivos Publicado por: amchacon en 4 Febrero 2013, 10:35 am Código No falta aquí un if? Título: Re: Ayuda con Archivos Publicado por: Maik33 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".
Título: Re: Ayuda con Archivos Publicado por: jscrip en 4 Febrero 2013, 10:50 am Código No falta aquí un if? Código con ese if lo tengo y no funciona Título: Re: Ayuda con Archivos Publicado por: Maik33 en 4 Febrero 2013, 14:11 pm Ya he encontrado el fallo.
Código
En la comparacion tienes: if(strcmp(pass,tmp)==0); El punto y coma, hace que siempre se ejecute lo que hay despues del if. Título: Re: Ayuda con Archivos Publicado por: jscrip en 4 Febrero 2013, 15:48 pm 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
Título: Re: Ayuda con Archivos Publicado por: naderST 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 Título: Re: Ayuda con Archivos Publicado por: jscrip 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: 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.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 Título: Re: Ayuda con Archivos Publicado por: rir3760 en 4 Febrero 2013, 17:16 pm Un error de diseño: solo puedes indicar que un nombre de usuario no es valido después de verificar todos los nombres, esa comprobación la debes colocar después del bucle donde lees todos los pares nombre + contraseña.
Por otra parte si se crea el archivo de datos el programa funciona correctamente salvo los detalles mencionados como fflush(stdin). Tal vez el error se deba al contenido de tu archivo "accesobanco.txt", revisalo. Un saludo Título: Re: Ayuda con Archivos Publicado por: 0xDani en 4 Febrero 2013, 17:26 pm Si el archivo no esta creado cuando ejecutas el programa, tengo entendido que fopen() no lo crea si le pasas "r" como modo de apertura.
Saludos. Título: Re: Ayuda con Archivos Publicado por: jscrip en 4 Febrero 2013, 17:29 pm Si el archivo no esta creado cuando ejecutas el programa, tengo entendido que fopen() no lo crea si le pasas "r" como modo de apertura. El archivo se crea con otra funcion, en el menu del programa se debe crear el archivo con una funcion sino no entra a la funcion de comprobacion, eso esta validadoSaludos. Título: Re: Ayuda con Archivos Publicado por: jscrip en 4 Febrero 2013, 17:30 pm Un error de diseño: solo puedes indicar que un nombre de usuario no es valido después de verificar todos los nombres, esa comprobación la debes colocar después del bucle donde lees todos los pares nombre + contraseña. El contenido del erchivo es de esta manera:Por otra parte si se crea el archivo de datos el programa funciona correctamente salvo los detalles mencionados como fflush(stdin). Tal vez el error se deba al contenido de tu archivo "accesobanco.txt", revisalo. Un saludo user, password user, password user, password user, password Título: Re: Ayuda con Archivos Publicado por: jscrip en 4 Febrero 2013, 17:38 pm Esta funcion crea el archivo:
void opcion1() { FILE *p; p = fopen("accesobanco.txt", "w++"); fprintf(p, "%s, %s","useras34", "ae78"); fprintf(p, "%s, %s","\nuseras32", "ui99"); fprintf(p, "%s, %s","\nuseras45", "eo76"); fprintf(p, "%s, %s","\nuserasg6", "ie44"); fclose ( p ); } Título: Re: Ayuda con Archivos Publicado por: naderST en 4 Febrero 2013, 18:21 pm Me parece que el formato que le estás dando a tu archivo no es el correcto, prueba con esto:
Código
Título: Re: Ayuda con Archivos Publicado por: 0xDani en 4 Febrero 2013, 18:32 pm "w++" no es ningun modo de apertura valido para fopen(), supongo que sera "w+".
Título: Re: Ayuda con Archivos Publicado por: jscrip en 4 Febrero 2013, 18:40 pm Me parece que el formato que le estás dando a tu archivo no es el correcto, prueba con esto: Lo volví a probar en linux y me funcionó, si lo voy ejecutando por pasos se llena de basura en visual studio.Código
fgets( S1, sizeof(S1), stdin ); De todos modos muchas gracias. Saludos. |