不能两次读取相同的变量

时间:2015-08-28 13:39:37

标签: d

对于这个简单的代码:

long l;
readf("%d", &l);
readf("%d", &l);

当我输入20作为第二个数字时,它会抛出异常

exception: std.conv.ConvException@/usr/include/dlang/dmd/std/conv.d(1995): 

意想不到的' 2'从类型LockingTextReader转换为类型long

为什么会发生这种情况,我做错了什么?

1 个答案:

答案 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);