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.

Reply via email to