digitalmars.D - readf error bug?
- Dave Akers (20/20) May 09 2015 The following...
- Dennis Ritchie (5/27) May 09 2015 To '\ n' does not remain in the input stream, it is necessary to
- Dave Akers (13/47) May 09 2015 I was meaning this as a bug report. But wanted to point out your
- John Colvin (2/39) May 09 2015 issues.dlang.org please, otherwise no-one will remember to fix it.
- Dave Akers (3/42) May 09 2015 Submitted... or rather found a similar one and updated it.
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.
May 09 2015
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);
May 09 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: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.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);
May 09 2015
On Saturday, 9 May 2015 at 08:41:49 UTC, Dave Akers wrote:On Saturday, 9 May 2015 at 08:34:42 UTC, Dennis Ritchie wrote:issues.dlang.org please, otherwise no-one will remember to fix it.On Saturday, 9 May 2015 at 08:30:31 UTC, Dave Akers wrote:I was meaning this as a bug report.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);
May 09 2015
On Sat, 09 May 2015 09:23:23 +0000, John Colvin wrote:On Saturday, 9 May 2015 at 08:41:49 UTC, Dave Akers wrote:Submitted... or rather found a similar one and updated it. https://issues.dlang.org/show_bug.cgi?id=12260On Saturday, 9 May 2015 at 08:34:42 UTC, Dennis Ritchie wrote:issues.dlang.org please, otherwise no-one will remember to fix it.On Saturday, 9 May 2015 at 08:30:31 UTC, Dave Akers wrote:I was meaning this as a bug report.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);
May 09 2015








Dave Akers <dave dazoe.net>