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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Utilizar Strtok con ficheros???
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Utilizar Strtok con ficheros???  (Leído 1,883 veces)
Zegaral

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Utilizar Strtok con ficheros???
« en: 10 Marzo 2019, 20:28 pm »

Hola! Estaba realizando un sistema de "login" (usuario y contraseña) en C, pero tengo que hacerlo utilizando una archivo que almacena datos de los jugadores de la siguiente forma:
Código:
John245/Juan Perez/01/100/0/ON/200/0/0/JGD/jp123
Perk243/Pedro Mieres/05/100/0/ON/400/0/0/ADM/pm213
Man091/Manuel Campaña/08/100/0/OFF/100/13/JGD/mc987
Donde el primer dato es el usuario y el último dato es la contraseña.
Como los datos están separados por '/' se me había ocurrido utilizar la función strtok(), el problema es que no se como hacer que la función me devuelva el dato como una cadena, y que esa cadena se compare con la introducida por el usuario cuando le pides que Inicie Sesión. ¿Alguna ayuda?
El código de la función que llevaba por el momento era el siguiente:
Código:
void login () {

FILE *jugadores ;
char usuario[20] ;

jugadores = fopen("jugadores.txt", "r++") ;

if ( jugadores == NULL ) {

printf("\nError de apertura en el fichero\n");

}

else {

printf("\nNombre de Usuario:\t");
scanf("%s", usuario) ;



fclose(jugadores) ;

}
}
Muchas gracias y un saludo.


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Utilizar Strtok con ficheros???
« Respuesta #1 en: 10 Marzo 2019, 20:49 pm »

Primero consigue la cadena con fgets y usas strtok para conseguir el nombre de usuario.
Si no es igual al nombre introducido por teclado vuelves a conseguir otra línea con fgets.
Si es igual al nombre introducido por teclado vuelves a usar strtok para conseguir la contraseña.
A partir de ahí haz lo que necesites: que pida tres veces la contraseña si se equivoca, rechace al usuario, bloquee la cuenta, lo deje entrar si ha acertado... ya depende de tí.


En línea

Zegaral

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Utilizar Strtok con ficheros???
« Respuesta #2 en: 10 Marzo 2019, 22:23 pm »

Enorme compañero!  ::)
Hice lo que aconsejaste, pensé un poco y Voilá, funciona a la perfección.
Aún me queda hacer el tema de la contraseña, que lo terminaré mañana, te dejo por aquí el código del usuario para que veas lo que hemos conseguido  ;-):
Código:
void login () {

FILE *jugadores ;
char usuario[20] ;
char contrasena[20] ;
char copia_usuario[100] ;
char lectura;
char *token ;
const char separador[2] = "/" ;
int opcion , cont = 0 ;

//Abrimos el fichero
jugadores = fopen("jugadores.txt", "r++") ;

if ( jugadores == NULL ) {

printf("\nError de apertura en el fichero\n");

}

else {

//Pide el nombre de usuario
printf("\nNombre de Usuario:\t");
scanf("%s", usuario) ;

//Comprueba que el nombre de usuario está en el fichero
do {

//Asigna a la cadena auxiliar una linea de 100 caracteres del fichero
fgets (copia_usuario, 100 , jugadores) ;
//Coge lo que haya antes del / de dicha cadena
token = strtok (copia_usuario, separador) ;

//Si el fichero termina o no encuentra comparativa sale
} while (!feof(jugadores) && strcmp(token, usuario) != 0) ;

//Si ha encontrado usuario pide contraseña
if ( strcmp(token, usuario ) == 0 ) {

//Pedimos la contraseña
printf("\nContrase%ca:\t", 164);
scanf("%s", contrasena) ;

}

//Sino ha encontrado usuario pide registro
else {

printf("\nUsuario no encontrado\n");

//Inicializamos el menu si no encuentra el usuario
do {

printf("\n[1] Volver a introducir usuario\n[2] Registrarme\n");
scanf("%i", &opcion);

} while ( opcion != 1 && opcion != 2 ) ;

switch (opcion) {

case 1:

printf("Hola");
break ;

case 2:

printf("Hola");
break;

}
}

}

fclose(jugadores) ;

}
Gracias de nuevo!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
iDStore lista ficheros y directorios ocultos de ficheros .DS_Store
Nivel Web
MichBukana 0 3,580 Último mensaje 29 Agosto 2013, 09:21 am
por MichBukana
strtok
Programación C/C++
LAULAU12 2 3,065 Último mensaje 27 Enero 2015, 16:26 pm
por elProfeta1979
Problema con strtok
Programación C/C++
arcanaer 0 1,661 Último mensaje 21 Noviembre 2016, 07:01 am
por arcanaer
Código strtok
Programación C/C++
antolinalvaro 2 1,628 Último mensaje 16 Julio 2018, 17:51 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines