Prompting using stdio
via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Sep 28 08:36:15 PDT 2014
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.
More information about the Digitalmars-d-learn
mailing list