no detecto el error

Iniciado por puchi, 15 Diciembre 2016, 12:30 PM

0 Miembros y 1 Visitante están viendo este tema.

puchi

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.

#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;
}

avesudra

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


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

int main(){
   
    while(1){

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

    return 0;
}
Regístrate en

puchi

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?

MAFUS

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.