Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: tracio en 01 de Abril 2021, 20:35

Título: leguajeC C No me reconoce un fichero .txt creado al entrar al programa de nuevo
Publicado por: tracio en 01 de Abril 2021, 20:35
Buenas, no se por qué 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 ningún fichero o estuviera vacío 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!!

Código: [Seleccionar]
#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');

}
Título: Re: Ayuda!!No me reconce un fichero.txt creado al entrar al programa de nuevo.
Publicado por: Kabuto en 02 de Abril 2021, 00:29
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.
Título: Re: Ayuda!!No me reconce un fichero.txt creado al entrar al programa de nuevo.
Publicado por: tracio en 02 de Abril 2021, 21:12
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!!