readf interferes with readln

Bastiaan Veelo via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Apr 27 01:53:08 PDT 2017


On Thursday, 27 April 2017 at 08:37:26 UTC, ketmar wrote:
> 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.

Right, of course. Thanks a lot.




More information about the Digitalmars-d-learn mailing list