Progtwigción en C escribiendo una lista que está modificada por 10

Estoy tratando de trabajar en un progtwig donde el usuario ingresa un número aleatorio y el progtwig ingresa en una lista del 0 al 9.

Por ejemplo, digamos que el usuario ingresa el número 12, entonces la pantalla debería verse así:

0123456789012

Donde ‘2’ al final indica el número 12. He intentado esto pero me da un bucle infinito y no sé cómo decirle que pare:

for(i = 0; i < cells; i++) { i = i%10; printf("%d", i); } 

Las celdas aquí es el número que ingresa el usuario.

El problema es que estás cambiando i en el bucle. Debe iterar tantas veces como la entrada. Ya casi está ahí, pero hace un ciclo para siempre porque está modificando i de tal manera que nunca será más grande o igual que las cells para cells > 10 .

Prueba esto:

 for( int i = 0; i < cells; ++i ) { printf( "%d", i % 10 ); } 

También...

0123456789012

Donde '2' al final indica el número 12.

El segundo 2 es el número 13, no el 12 🙂

¡No modifique la variable original dentro del bucle! Cree una nueva variable para mantener el valor de i%10 .

No quieres configurar i = i%10 . Crea otra variable y configúralo en i%10

Cuando haces i = i%10; realmente alteras los contenidos de i que el bucle está utilizando para contar. Lo que deberías estar haciendo es calcular el mod dentro del printf como

printf("%d", i%10);

o almacenar el mod en otra variable e imprimir que gusta

 mod_i = i % 10; printf("%d", mod_i); 

El problema es i = i%10 ; está cambiando el valor de i a i % 10 . Entonces, las cells son mayores a 10, en algún punto i tendrá el valor 10 al comienzo del bucle y luego se le asignará el valor 0 ( 10 % 10 ). Por lo tanto, su bucle se repetirá para siempre ya que i < cells siempre serán falsas.

La solución es eliminar la asignación por completo y solo printf("%d", i % 10) .