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