Imprima una cadena char por char con un retraso después de cada char

Tengo un problema un tanto estúpido porque se supone que es completamente simple …

Supongamos que tengo una cadena:

char *str = "stackoverflow"; 

Quiero imprimir esa cadena un carácter a la vez con algún retraso después de cada carácter:

 int i = 0; while (str[i] != '\0') { putchar(str[i]); usleep(100000); i++; } 

Pero en lugar de hacer lo obvio y correcto, imprimir un personaje y esperar 100 ms y volver a hacerlo, parece que el retraso se acumula y se escupe de una vez.
Así que duerme felizmente durante aproximadamente un segundo y medio y luego imprime mi cadena.

¿Algunas ideas?
(Hice exactamente lo mismo en Ruby sin ningún problema y también lo probé con el método ‘\ r’, que también funciona en Ruby …)

¡Por favor ayuda!
De lo contrario no puedo hacer el progtwig para mi tarea, que es imprimir una cadena ; pero no quiero hacerlo aburridamente …;)

¡Gracias!

Trate de vaciar el búfer entre:

 putchar(str[i]); fflush(stdout); usleep(100000); 

Cuando se escribe en un terminal, la salida suele tener un buffer de línea. La cosa real se imprime si se encuentra un \n o si el búfer se llena.

Alternativamente, puede desactivar el almacenamiento en búfer de una vez por todas al principio:

 setbuf(stdout, NULL); 

No es el retraso el que se acumula y se escupe al instante, es la cadena (tenga en cuenta que cuando ejecuta su progtwig, el retraso se produce antes de que se imprima la cadena, no después de ella).

Lave la salida estándar después de cada char:

 fflush(stdout); 

Necesitas llamar a fflush() . Los personajes están recibiendo búferes.