www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - User input; quick question.

reply fred <frederickdnoe gmail.com> writes:
import std.stdio;

I am somewhat new to D, and I am trying to receive user input, 
like this, with a prompt:

string str;
writeln("Enter a string: ");
str = readln;
writeln(str);

However, the prompt appears after I enter the input; any reason 
why?

I've trawled the internet for a good hour, but I can't seem to 
find an answer.
Apr 29
parent reply cym13 <cpicard openmailbox.org> writes:
On Saturday, 29 April 2017 at 21:09:13 UTC, fred wrote:
 import std.stdio;

 I am somewhat new to D, and I am trying to receive user input, 
 like this, with a prompt:

 string str;
 writeln("Enter a string: ");
 str = readln;
 writeln(str);

 However, the prompt appears after I enter the input; any reason 
 why?

 I've trawled the internet for a good hour, but I can't seem to 
 find an answer.
Your code is correct, it's your terminal or whatever you use to see your program's output that doesn't flush stdout. You can force it though: string str; writeln("Enter a string: "); stdout.flush; str = readln; write(str);
Apr 29
parent fred <frederickdnoe gmail.com> writes:
On Saturday, 29 April 2017 at 21:18:27 UTC, cym13 wrote:
 On Saturday, 29 April 2017 at 21:09:13 UTC, fred wrote:
 import std.stdio;

 I am somewhat new to D, and I am trying to receive user input, 
 like this, with a prompt:

 string str;
 writeln("Enter a string: ");
 str = readln;
 writeln(str);

 However, the prompt appears after I enter the input; any 
 reason why?

 I've trawled the internet for a good hour, but I can't seem to 
 find an answer.
Your code is correct, it's your terminal or whatever you use to see your program's output that doesn't flush stdout. You can force it though: string str; writeln("Enter a string: "); stdout.flush; str = readln; write(str);
Thank you, again.
Apr 29