Thread overview
writef vs writeln and printing to the console
Jan 08, 2011
Andrej Mitrovic
Jan 08, 2011
Jesse Phillips
Jan 08, 2011
Andrej Mitrovic
Jan 09, 2011
Andrej Mitrovic
Jan 09, 2011
Andrej Mitrovic
January 08, 2011
Unfortunately I can't provide a simple test case, but I have a case where using:

writef("..........\n");

inside a loop that runs a dozen times does not print out each line as the statement is reached, instead it prints out everything at once when the application is done. If I use this:

writeln(".........");

then I get each line printed out at the exact moment as this statement is reached. Is this normal behavior?
January 08, 2011
Andrej Mitrovic Wrote:

> Unfortunately I can't provide a simple test case, but I have a case where using:
> 
> writef("..........\n");
> 
> inside a loop that runs a dozen times does not print out each line as the statement is reached, instead it prints out everything at once when the application is done. If I use this:
> 
> writeln(".........");
> 
> then I get each line printed out at the exact moment as this statement is reached. Is this normal behavior?

I don't think new line means to flush the buffer like it does in printf. I think you can use stdout.flush() from stdio;

January 08, 2011
On 1/9/11, Jesse Phillips <jessekphillips+D@gmail.com> wrote:
> I don't think new line means to flush the buffer like it does in printf. I think you can use stdout.flush() from stdio;
>

Ok, that works. Thanks.
January 09, 2011
On 01/08/11 17:03, Jesse Phillips wrote:
> Andrej Mitrovic Wrote:
> 
>> Unfortunately I can't provide a simple test case, but I have a case where using:
>>
>> writef("..........\n");
>>
>> inside a loop that runs a dozen times does not print out each line as the statement is reached, instead it prints out everything at once when the application is done. If I use this:
>>
>> writeln(".........");
>>
>> then I get each line printed out at the exact moment as this statement is reached. Is this normal behavior?
> 
> I don't think new line means to flush the buffer like it does in printf. I think you can use stdout.flush() from stdio;
> 

What Jesse said, but also: I can't help wondering if there's a special
reason why you cannot (or would rather not) use writefln(".....")?

-- Chris N-S
January 09, 2011
On 1/9/11, Christopher Nicholson-Sauls <ibisbasenji@gmail.com> wrote:
> What Jesse said, but also: I can't help wondering if there's a special
> reason why you cannot (or would rather not) use writefln(".....")?
>

Oh it's not a problem. I was converting some C code and it used printf's with embedded newlines in the string. So I converted these to the safer writefln, but I got a different behavior when I compiled compared to the C version.
January 09, 2011
*I meant I converted them to writef, not writefln, and got a different behavior*. writefln works fine.
January 09, 2011
On 01/09/11 06:52, Andrej Mitrovic wrote:
> *I meant I converted them to writef, not writefln, and got a different behavior*. writefln works fine.

Okay, gotcha.  I'll agree that the behavioral change is unexpected (when coming from C).  I believe there was actually a long discussion a while back on "to flush or not to flush" with regard to stdio functions, and apparently it was decided not to have the non *ln routines flush.  Worth noting in the documentation if it isn't already.

-- Chris N-S