从D语言读取控制台输入时出错

时间:2014-07-07 20:54:59

标签: d stdin

我正在编写一个简单的代码来输入要带到派对上的糖果和气球的数量。 我写了

import std.stdio;
void main()
{
 int candiesCount;
 readf("%s", &candiesCount);

write("How many balloons are there? ");
int balloonCount;
readf("%s", &balloonCount);

writeln("Got it: There are ", candiesCount, " candies",
        " and ", balloonCount, " balloons.");
}

但在输入糖果数量后我得到了这个错误:

Unexpected '
' when converting from type LockingTextReader to type int
 ----------------
0x00403B5F
0x004038FF
0x004033AE
0x00402564
0x004024C0
0x00402415
0x0040206A

0x7564173E in BaseThreadInitThunk
0x77C76911 in LdrInitializeThunk
0x77C768BD in LdrInitializeThunk

请帮助我,因为我是这门语言的新手。

2 个答案:

答案 0 :(得分:2)

这也困扰了我一段时间。 Andrei解释说,readfvery picky关于匹配格式字符串的输入。

您只需要将\n添加到格式字符串的末尾即可。我想这是因为你按回车提交输入,但我不完全确定(我还是这个语言的新手)。

看起来应该是这样的:

readf("%s\n", &candiesCount);
...
readf("%s\n", &balloonCount);

答案 1 :(得分:2)

由于输入不匹配而发生错误。原因是空白。要解决此问题,请使用

readf(" %s", &candiesCount); // notice the space before %s

%s之前添加空格会跳过空格字符。

有关详细信息,请查看此页面(出于某种原因恰好有类似的例子):http://ddili.org/ders/d.en/input.html