Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: pacosn1111 en 24 Abril 2015, 16:33 pm



Título: Funcion genera numeros aleatorios de x cifras ayuda
Publicado por: pacosn1111 en 24 Abril 2015, 16:33 pm
Hola a tod@s, resulta que para el motor de cifrado que estoy escribiendo acabo de hacer una función que debería generar numeros aleatorios muy grandes, para ello uso el truco de ir generando numero por numero e ir guardandolo uno a uno en una cadena y después pasarlo a double con atof, pero no funciona como debería, dejo el código:

Código
  1. double aleatorio_cifras(int cifras) {
  2.  
  3. int x;
  4. int random;
  5. char aux[2];
  6. char num[cifras];
  7.  
  8. for(x=0; x<cifras; x++){
  9.  
  10. random=rand () % 10;
  11. sprintf(aux, "%d", random);
  12. strcat(num, aux);
  13.  
  14. }
  15. printf("%s", num);
  16. return atof(num);
  17.  
  18. }
  19.  

Esto genera de salida algo así:

"�@2282"

Es decir, genera el numero aleatorio de 4 cifras que le pido, pero antes genera esos caracteres que no se de donde salen, y por culpa de eso la función atof no convierte bien el string a double.

Gracias de antemano saludos.


Título: Re: Funcion genera numeros aleatorios de x cifras ayuda
Publicado por: T. Collins en 24 Abril 2015, 17:11 pm
strcat

char * strcat ( char * destination, const char * source );

Concatenate strings
Appends a copy of the source string to the destination string. The terminating null character in destination is overwritten by the first character of source, and a null-character is included at the end of the new string formed by the concatenation of both in destination.

Puedes poner esto antes del for:
Código
  1. num[0] = 0;


Título: Re: Funcion genera numeros aleatorios de x cifras ayuda
Publicado por: pacosn1111 en 24 Abril 2015, 19:00 pm
strcat

char * strcat ( char * destination, const char * source );

Concatenate strings
Appends a copy of the source string to the destination string. The terminating null character in destination is overwritten by the first character of source, and a null-character is included at the end of the new string formed by the concatenation of both in destination.

Puedes poner esto antes del for:
Código
  1. num[0] = 0;

Gracias, solucionado!