readf error bug?
Dave Akers via Digitalmars-d
digitalmars-d at puremagic.com
Sat May 9 01:41:47 PDT 2015
On Saturday, 9 May 2015 at 08:34:42 UTC, Dennis Ritchie wrote:
> On Saturday, 9 May 2015 at 08:30:31 UTC, Dave Akers wrote:
>> The following...
>>
>> import std.stdio;
>>
>> void main() {
>> write("How many students are there? ");
>> int studentCount;
>> readf("%s", &studentCount);
>> write("How many teachers are there? ");
>> int teacherCount;
>> readf("%s", &teacherCount);
>>
>> writefln("Got it: there are %d students.", studentCount);
>> writefln("And there are %d teachers.", teacherCount);
>> }
>>
>>
>> When given the input...
>> 10
>> 42
>>
>> will produce the error...
>> std.conv.ConvException@/usr/include/dlang/dmd/std/conv.d(2013):
>> Unexpected '4' when converting from type LockingTextReader to
>> type int
>>
>> I understand what is wrong and how to fix it but the produced
>> error is
>> incorrect.
>
> To '\ n' does not remain in the input stream, it is necessary
> to write so:
> -----
> readf("%s ", &studentCount);
I was meaning this as a bug report. But wanted to point out your
solution does not work. I was interested in D back in 1.0 days
but soo much has changed in d 2.0 that I'm reading through the
"Programming in D" book to learn all the new stuff and came
across this odd un-helpful error.
...
readf(" %s", &studentCount);
...
readf(" %s", &teacherCount);
...
that way it will ignore any non int chars left on the stdin
stream.
More information about the Digitalmars-d
mailing list