Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - defalt_

#1
Cita de: ivancea96 en  4 Noviembre 2017, 13:41 PM
La salida por consola es un buffer, es decir, antes de mostrarse en consola, los datos se almacenan.
Cuando escribes una letra, en vez de ir a la consola, va al buffer. (Temas de eficiencia)
El buffer se envía a la consola eventualmente de forma automática o manual.
Como tu programa está trabajando continuamente, no llega a enviar el buffer. tendrás que hacerlo manualmente.
Para ello, invoca la función:
fflush(stdout);
Cada vez que quieras asegurarte de imprimer algo en consola (en este caso, después del printf)

Por cierto, para hacer pausas, mejor utiliza Sleep(ms) de la librería <windows.h> (en caso de que estés en windows), o alguna otra utilidad relacionada con el tiempo. De este modo, evitas que tu programa consuma exceso de CPU.

Entendido! Ahora va perfectamente, muchas gracias :D
#2
Nada, tambien probe añadiendo time.h y sigue sin funcionar, lo raro es que funcione en windows y en linux no, tambien he cambiado a==0; por a=0; y sigue sin ir

int i,a;
for(i=0;i<29;i++){
printf("%c",frase[i]);
for(a=0;a<31250000;a++){}
a=0;
}
#3
Programación C/C++ / Ayuda con delay entre letras
4 Noviembre 2017, 02:47 AM
Buenas, tengo un problema y no se por que me pasa, el tema es que tengo que hacer un trabajo para el instituto y necesito hacer mini-delays entre cada letra de una cadena como para hacer una animación de barrido. En consola de Windows me funciona perfectamente, el problema es que los ordenadores de mi instituto son linux, lo he probado en consola de linux y resulta que no funciona igual, en vez de hacer cada delay entre letras, hace la espera al principio y despues imprime de golpe la frase. Al principio pense que seria por el tiempo de reloj de cada procesador al ser diferentes ordenadores pero tambien lo intente en entorno linux en mi propio ordenador y sucede lo mismo que en mi instituto. ¿No debería funcionar igual o hay algo que hace diferente cada consola al ejecutar? Os dejo el codigo por aqui abajo (el tiempo del segundo bucle esta medido, ya os digo, si lo copiais y lo probais en Windows funciona perfectamente):

#include <stdio.h>
#include <string.h>

int main(){
int i,a;
char frase[41]={"Esto es una prueba de pausas entre letras"};
for(i=0;i<41;i++){
printf("%c",frase[i]);
for(a=0;a<31250000;a++){}
a==0;
}
return 0;
}