Verás al declarar tu variable
la defines con una longitud de 10 a la vez que la rellenas y cuando haces
le estás diciendo a digito[0] que es igual a cadena[35] (35 digamos que es el número aleatorio que nos generó en esa iteración) pero anterior mente definimos a cadena con una longitud de 10 a si que cadena[35] está accediendo a un espacio de memoria no definida y dígito no está cambiando su posición en ningún momento (deberías de poner digito)
Código (c) [Seleccionar]
char cadena[10]={'0','1','2','3','4','5','6','7','8','9'};
la defines con una longitud de 10 a la vez que la rellenas y cuando haces
Código (c) [Seleccionar]
digito=cadena[rand() % 50]; //numero aleatorio entre 0 y 35
le estás diciendo a digito[0] que es igual a cadena[35] (35 digamos que es el número aleatorio que nos generó en esa iteración) pero anterior mente definimos a cadena con una longitud de 10 a si que cadena[35] está accediendo a un espacio de memoria no definida y dígito no está cambiando su posición en ningún momento (deberías de poner digito)