On Sunday, 28 September 2014 at 14:48:03 UTC, H. S. Teoh via
Digitalmars-d-learn wrote:
On Sun, Sep 28, 2014 at 02:16:29PM +0000, "Nordlöw" via
Digitalmars-d-learn wrote:
I thought
int main(string[] args)
{
import std.stdio;
write(`Press enter to continue: `);
stdout.flush;
auto line = readln();
writeln("Read ", line);
return 0;
}
would function as a good prompting but it doesn't.
I outputs the string given to write *after* I've pressed
return. Why?
It's an OS limitation. If you're on Posix, you need to switch
your
terminal to cbreak mode, otherwise the program doesn't actually
receive
any data until after you press Return. I'm not sure what the
Windows
equivalent is, but a similar thing happens there -- the input
line is
buffered by the OS and the program doesn't see it until Return
is
pressed.
That's not his problem though - he doesn't see "Press enter to
continue" in the terminal before he enters text.
However, I can't reproduce it with DMD master on Linux, it works
for me as intended.