Autor Tema: Ayuda!!No me reconce un fichero.txt creado al entrar al programa de nuevo.  (Leído 390 veces)

tracio

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Buenas, no se porque al crear un fichero txt para guardar un password es decir una cadena de caracteres al salir del programa cuando quiero volver a entrar e introduzco el password de nuevo es como si dentro del programa no reconociera ningun fichero o estuviera vacio cuando en realidad sigue creado en el escritorio , ejecutadlo vosotros mismos , dentro del programa te deja elegir para crear un password nuevo o cambiarlo y luego acceder con el password creado que efectivamente si no salgo del programa me deja entrar pero cuando salgo del programa y vuelvo a entrar porque carajos cuando quiero acceder con el password no me deja ?? si se supone que el fichero no ha muerto y sigue intacto en el escritorio No lo pillo. No se que mas opciones pueden haber para solucionar este dilema , Gracias!!

#include<stdlib.h>
#include<iostream>
#include<conio.h>
#include<string.h>

struct fichero{
   
char pass_admin[20];   
   
};



main(){
   
FILE *archivo;
struct fichero f;   

char exit;
char write[20];
int config;
int select;

do{
printf("\n>>>>>>>>>>>>>>>>>>MENU ACCESO<<<<<<<<<<<<<<<<<<<<<<<<<");
printf("\n__________Configuracion mi cuenta(C)__________");
printf("ACCEDER(A)__________");
printf(":");scanf("%c",&select);
fflush(stdin);

switch(select){
   
   
case 'c':
archivo=fopen("admin.txt","wt");
printf("NEW PASSWORD:");gets(f.pass_admin);
fwrite(&f,sizeof(f),1,archivo);
fclose(archivo);
fflush(stdin);

printf("\nyour password has been changed succesfully");
printf("\nVolver al menu de acceso?(S),pulse cualquier otra letra para salir del programa:");scanf("%c",&exit);


break;


case 'a':

printf("PASSWORD:");scanf("%s",write);
fflush(stdin);

if(strcmp(f.pass_admin,write)==0){
   
printf("acceso permitido");
printf("\nVolver al menu de acceso?(S),pulse cualquier otra letra para salir del programa:");scanf("%c",&exit);
break;

   
// todo el codigo que sigue    
   
}

}

system("cls");

}
while(exit=='s');


}

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 724
    • Ver Perfil
No me manejo demasiado con C, y aún menos tratándose de trabajar con ficheros.

Pero diría que en esta opción del switch, no estás leyendo el fihero de texto:

Código: [Seleccionar]
case 'a':

printf("PASSWORD:");scanf("%s",write);
fflush(stdin);

if(strcmp(f.pass_admin,write)==0){
   
printf("acceso permitido");
printf("\nVolver al menu de acceso?(S),pulse cualquier otra letra para salir del programa:");scanf("%c",&exit);
break;

Es decir, si reinicias programa y directamente eliges ACCEDER, no se está leyendo el fichero y por tanto el programa desconoce cuál es el password guardado para poder comparar con el que se introduce por teclado.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

tracio

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Cierto ,si no hubiera dado con la clave ayer , lo hubiera echo hoy con tu comentario , se me olvido llamar al fichero para que lo abra en modo lectura , y asi conociendo su tamanyo poder compararlo cada vez que quiera acceder  , muy acertado tu comentario, muchas gracias amigo!!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".