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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  no detecto el error
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: no detecto el error  (Leído 2,065 veces)
puchi

Desconectado Desconectado

Mensajes: 21



Ver Perfil
no detecto el error
« en: 15 Diciembre 2016, 12:30 pm »

Buenas, intento hacer funcionar este código pero no me funciona.

La idea que tengo es primero que imprima una letra y despues de 1 segundo la otra en la misma linea pero resulta que no imprime nada.

Utilizo maquina linux.

Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(){
   
    while(1){

       
        putchar('F');
        sleep(1);
        putchar('G');
        sleep(1);
    }

    return 0;
}


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: no detecto el error
« Respuesta #1 en: 15 Diciembre 2016, 12:50 pm »

Hola, tienes que vaciar el fichero stdout antes de llamar a la función sleep.

Mira aquí: http://stackoverflow.com/questions/13568388/c-sleep-function-not-working

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5.  
  6. int main(){
  7.  
  8.    while(1){
  9.  
  10.        fflush(stdout);
  11.        putchar('F');
  12.        sleep(1);
  13.        fflush(stdout);
  14.        putchar('G');
  15.        sleep(1);
  16.    }
  17.  
  18.    return 0;
  19. }


En línea

Regístrate en
puchi

Desconectado Desconectado

Mensajes: 21



Ver Perfil
Re: no detecto el error
« Respuesta #2 en: 15 Diciembre 2016, 13:05 pm »

Me cuesta entender un poco el problema que ocurre. Básicamente dice que si esperas 40s te aparecera todo impreso por pantalla o si no quieres esperar que utilices fflush(stdout) pero esta funcion que es lo que hace realmente?
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: no detecto el error
« Respuesta #3 en: 15 Diciembre 2016, 15:40 pm »

Un programa en C tiene implícitas dos salidas estándar y una entrada estándar.

Las dos salidas estándar son:
1. stdout, que es un buffer donde el programa escribe en él y se descarga en pantalla, normalmente, ante ciertas circunstancias.

2. stderr, que es una salida inmediata normalmente hacia la pantalla. Cuándo se escribe en ella directamente se visualiza.

printf, puts, putchar, etc. escriben en stdout. Para forzar el vaciado de ese buffer se usa fflush(stdout). fflush fuerza el vaciado del buffer de salida que se le ha pasado como argumento.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
El controlador detectó un error de controladora en \Device\Ide\IdePort1.
Hardware
colchy 7 4,813 Último mensaje 14 Abril 2020, 17:39 pm
por colchy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines