对于这个简单的代码:
long l;
readf("%d", &l);
readf("%d", &l);
当我输入20作为第二个数字时,它会抛出异常
exception: std.conv.ConvException@/usr/include/dlang/dmd/std/conv.d(1995):
意想不到的' 2'从类型LockingTextReader转换为类型long
为什么会发生这种情况,我做错了什么?
答案 0 :(得分:2)
在第一个需要消费之后,还有一个换行符位于缓冲区中。
与我在此处撰写的内容类似:D lang - Using read and readln() in the same program
同样的修复应该有效。
long l;
readf(" %d", &l); // note the leading space
writeln("Got ", l);
readf(" %d", &l); // and again
writeln("Got ", l);