小编Saj*_*ari的帖子

简单的ada程序使用get_line()和put_line()产生错误的空行

我在一个较大的程序中一直遇到这个问题,所以我制作了一个新的ada程序来对其进行测试,结果也是如此。

我有一个文本文件(Unix行尾):

000_1000_0010_1001
100_0000_0010_1001
100_1000_0000_1001
100_1000_0010_0001
100_1000_0010_1001
000_0000_0011_0011
100_1000_0100
000_0000_0110
111_1111_1111
011_1111_1111
000_0000_0110
Run Code Online (Sandbox Code Playgroud)

我要使用的方法很简单,将每行放入一个字符串中,然后直接将其打印出来。

这是我的代码:

000_1000_0010_1001
100_0000_0010_1001
100_1000_0000_1001
100_1000_0010_0001
100_1000_0010_1001
000_0000_0011_0011
100_1000_0100
000_0000_0110
111_1111_1111
011_1111_1111
000_0000_0110
Run Code Online (Sandbox Code Playgroud)

容易吧?它使用get_line接收每一行,将其保存到“ input”变量中,然后打印出所读取的任何量(使用get_line()返回的长度)。

不幸的是,当我运行以下代码时,我得到了一堆空白行:

gnatmake read read.adb
read < input.txt
Run Code Online (Sandbox Code Playgroud)
000_1000_0010_1001

100_0000_0010_1001

100_1000_0000_1001

100_1000_0010_0001

100_1000_0010_1001

000_0000_0011_0011

100_1000_0100
000_0000_0110
111_1111_1111
011_1111_1111
000_0000_0110

Run Code Online (Sandbox Code Playgroud)

我仔细检查了一下,确保我的输入文件中没有任何怪异的行尾字符或类似的字符(我只是在vim中输入了它们)。

这弄乱了我的程序,因为我必须考虑这些错误的空行。

知道我在做什么错吗?

stdin ada

3
推荐指数
1
解决办法
74
查看次数

标签 统计

ada ×1

stdin ×1