elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con delay entre letras
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con delay entre letras  (Leído 3,787 veces)
defalt_

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda con delay entre letras
« en: 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):

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main(){
  5. int i,a;
  6. char frase[41]={"Esto es una prueba de pausas entre letras"};
  7. for(i=0;i<41;i++){
  8. printf("%c",frase[i]);
  9. for(a=0;a<31250000;a++){}
  10. a==0;
  11. }
  12. return 0;
  13. }
  14.  


« Última modificación: 4 Noviembre 2017, 02:53 am por defalt_ » En línea

JavierScars

Desconectado Desconectado

Mensajes: 116



Ver Perfil
Re: Ayuda con delay entre letras
« Respuesta #1 en: 4 Noviembre 2017, 03:10 am »

time.h te puede ayudar...

-A parte no estas haciendo a = 0 si no que estas comparando a con 0... eso devuelve true...


« Última modificación: 4 Noviembre 2017, 03:13 am por JavierScars » En línea

Usa lo malo de la vida a tu favor, escala montañas de problemas para deslizarte sobre soluciones, derrumba muros de decepciones para encontrar la libertar de la felicidad,  y quema la leña del fracaso para calentarte con el éxito. Recuerda que sin la oscuridad la luz no brillaría tanto.
defalt_

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda con delay entre letras
« Respuesta #2 en: 4 Noviembre 2017, 13:32 pm »

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

Código
  1. int i,a;
  2. for(i=0;i<29;i++){
  3. printf("%c",frase[i]);
  4. for(a=0;a<31250000;a++){}
  5. a=0;
  6. }
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda con delay entre letras
« Respuesta #3 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:
Código
  1. 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.
« Última modificación: 4 Noviembre 2017, 13:43 pm por ivancea96 » En línea

defalt_

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda con delay entre letras
« Respuesta #4 en: 6 Noviembre 2017, 20:26 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:
Código
  1. 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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Necesito delay....
Electrónica
ijfa 0 2,126 Último mensaje 6 Enero 2006, 15:57 pm
por ijfa
delay
PHP
securedigital 3 2,620 Último mensaje 7 Junio 2007, 06:12 am
por Crack_X
Crear un delay en asm
ASM
danielo- 3 18,780 Último mensaje 21 Diciembre 2010, 20:31 pm
por Yurix
como elimino espacio entre letras sin eliminar espacios entre palabras?
Scripting
binario010101 4 4,928 Último mensaje 11 Noviembre 2013, 08:16 am
por Almapa
Portátil con Windows 10 escribe “/“ entre las letras.
Windows
rem-_mer 2 7,408 Último mensaje 24 Enero 2023, 21:27 pm
por Manatidoble
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines