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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Utilizar Strtok con ficheros??? 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!
2  Programación / Programación C/C++ / 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.
3  Programación / Programación C/C++ / Trabajar con un array pasado de una función en: 9 Marzo 2019, 17:29 pm
Hola gente!

Estaba haciendo un ejercicio de vectores y quería separarlo en diferentes funciones.
Una para pedir el tamaño del vector (memoria dinámica), otra para crear el propio vector con los valores introducidos, y otra para mostrar dicho vector.

Mi problema es, que aún no controlo mucho el tema de los punteros y la memoria dinámica, entonces no se como pasar el vector creado en la función de crear_vector, para poder mostrarlo en mostrar_vector. Mi código es este:
Código:
#include <stdio.h>
#include <stdlib.h>

int tamano_vector () ;
int crear_vector ( int a )  ;
void mostrar_vector ( int a , int *n ) ;


int main () {

int tamano = tamano_vector () ;

int n[tamano] ;

*n = crear_vector (tamano) ;

mostrar_vector (tamano , n ) ;


return 0 ;


}
//
//
//
int tamano_vector ()  {

int dimension ;

printf("\nTamanio del Vector\n");
scanf("%d", &dimension);

return dimension ;

}
//
//
//
int crear_vector ( int a ) {

int *v ;

v = (int*)malloc(sizeof(int)*a) ;

for ( int i = 0 ; i < a ; i++ ) {

printf("\nElemento %i:\t", i+1);
scanf("%i", &v[i]);

}

return *v ;

}
//
//
//
void mostrar_vector ( int a ,  int *n ) {

printf("\nTu vector es:\n[") ;
for ( int i = 0 ; i < a ; i++ ) {

printf("\t%i", *n) ;

}

printf("]\n");

}
Un saludo a tod@s y muchas gracias!  ::) :D
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines