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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Error en programa generar clave aleatoria
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error en programa generar clave aleatoria  (Leído 2,800 veces)
pacosn1111

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Error en programa generar clave aleatoria
« en: 20 Mayo 2015, 22:04 pm »

Hola a tod@s, acabo de escribir un simple código en C que te pregunta con un scanf de cuantos caracteres quieres la clave y te genera una clave aleatoria con mayusculas minusculas y números aleatorios, cuando uso un numero de caracteres alto como 25 todo va bien, pero cuando uso uno pequeño, como 5, obtengo lo siguiente:

x81Zw@

Es decir, esa arroba de más no se por que me aparece, dejo aquí el código:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. void main() {
  6.  
  7. srand(time(NULL));
  8.  
  9. int cifras, x;
  10. char min[]="abcdefghijklmnopqrstuvwxyz";
  11. char may[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  12. char num[]="0123456789";
  13.  
  14. printf("Escribe el número de cifras del string a crear...");
  15. scanf("%d", &cifras);
  16. printf("\n");
  17.  
  18. char aleatorio[cifras];
  19.  
  20. for(x; x<cifras; x++) {
  21. int eleccion=(int)(rand() % 3+1);
  22.  
  23. switch ( eleccion ) {
  24. case 1:
  25. aleatorio[x]=min[rand() % 25+1];
  26. break;
  27. case 2:
  28. aleatorio[x]=may[rand() % 25+1];
  29. break;
  30. case 3:
  31. aleatorio[x]=num[rand() % 9+1];
  32. break;
  33. default:
  34. continue;
  35. }
  36.  
  37. aleatorio[cifras+1]='\0';
  38. }
  39. printf("%s\n", aleatorio);
  40. }
  41.  

Saludos.


« Última modificación: 20 Mayo 2015, 23:00 pm por engel lex » En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: Error en programa generar clave aleatoria
« Respuesta #1 en: 20 Mayo 2015, 22:38 pm »

No estas inicializando la variable x del ciclo, y te debe estar obteniendo un valor que esté almacenado en ese espacio en memoria. (el que esté)

Espero te ayude.


En línea

pacosn1111

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: Error en programa generar clave aleatoria
« Respuesta #2 en: 20 Mayo 2015, 22:48 pm »

Gracias por tu respuesta, pero ya lo he corregido y sigue dando el mismo fallo.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Error en programa generar clave aleatoria
« Respuesta #3 en: 20 Mayo 2015, 22:56 pm »

el codigo tiene una lista de errores...

1-
Código
  1. char aleatorio[cifras+1];

debe ser 1 más de largo para que puedas colocarle el caracter de terminación

2-
aquí es raro que no te diera error... estás accediendo a una posición invalida
Código
  1. aleatorio[cifras+1]='\0';


debe ser
Código
  1. aleatorio[cifras]='\0';

ya que el ciclo es x menor que cifras (nunca llega a cifras)

3-
lo tipico  con la linea 21 y el switch es que
Código
  1. int eleccion=(int)(rand() % 3)

y que el switch empieze en 0... sin embargo el metodo funciona, ya que se evalua primero el "%" y luego "+"

pero en 25, 28 y 31 tienes un error...
los array son de 26 y 10 de largo..

cuando haces
Código
  1. aleatorio[x]=num[rand() % 9+1];

se toma un numero entre 0 y 8, luego le sumas 1... así que "a", "A" y "0" nunca se darán

« Última modificación: 20 Mayo 2015, 23:08 pm por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
pacosn1111

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: Error en programa generar clave aleatoria
« Respuesta #4 en: 20 Mayo 2015, 23:10 pm »

el codigo tiene una lista de errores...

1-
Código
  1. char aleatorio[cifras+1];

debe ser 1 más de largo para que puedas colocarle el caracter de terminación

2-
aquí es raro que no te diera error... estás accediendo a una posición invalida
Código
  1. aleatorio[cifras+1]='\0';


debe ser
Código
  1. aleatorio[cifras]='\0';

Gracias, solucionado.

ya que el ciclo es x menor que cifras (nunca llega a cifras)

3-
lo tipico  con la linea 21 y el switch es que
Código
  1. int eleccion=(int)(rand() % 3)

y que el switch empieze en 0... sin embargo el metodo funciona, ya que se evalua primero el "%" y luego "+"

pero en 25, 28 y 31 tienes un error...
los array son de 26 y 10 de largo..

cuando haces
Código
  1. aleatorio[x]=num[rand() % 9+1];

se toma un numero entre 0 y 8, luego le sumas 1... así que "a", "A" y "0" nunca se darán


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Error en programa generar clave aleatoria
« Respuesta #5 en: 20 Mayo 2015, 23:45 pm »

Quisiste decir algo con la cita?
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
pacosn1111

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: Error en programa generar clave aleatoria
« Respuesta #6 en: 22 Mayo 2015, 10:05 am »

Si, que ya estaba solucionado, pero sin darme cuenta he generado una cita en blanco.

Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
(Solucionado)Error, messenger no conecta, error puertos clave, 80072efd « 1 2 »
Mensajería
leogtz 14 36,156 Último mensaje 9 Marzo 2011, 03:54 am
por chipironn
Error funcion aleatoria.
Programación C/C++
0xDani 7 3,702 Último mensaje 2 Junio 2012, 12:52 pm
por Valkyr
Generar clave
Ingeniería Inversa
chchdc 2 1,878 Último mensaje 19 Julio 2012, 11:08 am
por chchdc
Programa para cifrar mensajes de forma paseudo-aleatoria.
Programación C/C++
Stakewinner00 8 4,068 Último mensaje 25 Enero 2013, 21:38 pm
por Stakewinner00
Error 1402. El programa de instalación no puede abrir la clave del registro
Windows
7even 4 4,646 Último mensaje 24 Septiembre 2016, 18:00 pm
por 7even
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines