Cita de: MAFUS en 12 Abril 2016, 23:20 PMCódigo (c) [Seleccionar]char *password=malloc(8*sizeof(char))+1;
Esto está mal. malloc te asigna una zona de memoria pero devuelves la posición 1 byte superior. Tal vez quisiste decir:Código (c) [Seleccionar]char *password=malloc((8+1)*sizeof(char));
para guardar la cadena más el caracter nulo.
Pero tampoco convence ya que rand podría generarte un 0 cuándo estás consiguiendo los números, con lo que la cadena resultante acabaría en ese momento. Por otra parte no estás escribiendo caracteres numéricos sino caracteres de control ASCII no imprimibles, por lo que a la hora de visualizar la cadena podrían aparecer efectos extraños en pantalla.
Tal vez quisiste decir:Código (c) [Seleccionar];
for(i=0;i<4;i++)
password[i]=(int)rand()%10+'0';
Más. Si usas malloc para asignar memoria debes usar free para liberarla en cuanto no la uses. La penúltima instrucción de tu programa debería serCódigo (c) [Seleccionar]free(contrasena);
Gracias por tu respuesta compi, ya esta el programa listo.
Una duda, en el
Código (c) [Seleccionar]
for(i=0;i<4;i++)
password[i]=(int)rand()%10+'0';
;Por que no funciona sin el "'+0'"?