readf interferes with readln

ketmar via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Apr 27 01:37:26 PDT 2017


Bastiaan Veelo wrote:

> Hi,
>
> I am having trouble explaining the following to someone learning D. Can 
> someone explain why readln has different behaviour when it is preceded by 
> readf?
>
> Suppose we want to not end the program before the user presses Enter by 
> having readln at the end of main():
>
> ```
> import std.stdio;
>
> void main()
> {
>      int num;
>      write("Give a number ");
>      readf(" %s", num);
>      writeln("Thanks");
>      readln;
>      readln;
> }
> ```
>
> In this example this requires twice readln. When you comment out readf, 
> you need readln only once.
>
> Thanks!

'cause your `readf()` stops before consuming `'\n`. i.e. EOL is still in 
input buffer, and first `readln()` will immediately consume it.


More information about the Digitalmars-d-learn mailing list