Does anyone know why if i put a printf just before a delay it waits until the delay is finished before it prints de message?
Code1 with sleep():
int
printf buffers it's output until a newline is output.
Add a fflush(stdout); to flush the buffers on demand.
When you call printf, you don't print anything until really necessary: until either the buffer fulls up, or you add a new line. Or you explicitly flush it.
So, you can either do
printf("Something\n");
delay();
or
printf("Something");
fflush(stdout);
delay();
Normally, standard output is buffered until you either:
\n
characterfflush(stdout)
Do one of these things before calling delay()
and you should see your output.
Technically that shouldn't even compile. In the delay("sleep 3")
call you're trying to convert a const char *
to a float
. It should be:
void delay (float sec)
{
// ...
}
delay(3);
the standard output is not flush until you output a '\n' char.
try printf ("hi world\n");