我在读取文件中的输入时遇到了一些麻烦。所以我所做的是做了一个概念验证程序,这是我的主要程序的一部分,它可以做更多的事情,但我只是在阅读输入时遇到困难。 这里是我的概念方案的论证:只读取来自ada文件的一个输入
WITH Ada.Text_IO; USE Ada.Text_IO;
with ada.Integer_Text_IO; use ada.Integer_Text_IO;
PROCEDURE Open_File IS
subtype idnum is string(1 ..7);
-- Make short names so that we can show where things come from
My_File : File_Type; -- Name for file in this program
Os_Name : String := "My_Data.txt"; -- OS name for the file
N : idnum; -- Temporary for reading and printing file contents
EOL : boolean;
C : character;
BEGIN
-- Open will raise an ADA.IO_EXCEPTIONS.NAME_ERROR expection
-- if the file does not exist.
Open (File => My_File, Mode => In_File, Name => Os_Name);
LOOP
EXIT WHEN End_Of_File (My_File);
Look_Ahead(My_File, C, EOL);
IF EOL THEN
Skip_Line;
ELSE
IF C = ' ' THEN
Get(My_File, C);
ELSE
Get (My_File, N);
Put_Line(N);
END IF;
END IF;
END LOOP;
Close (My_File);
END open_file;
我的数据文件看起来像这样:(包括最后的ID后,没有新的生产线的空间)
1234567
456784a
6758abc
当我编译和运行我的程序只有第一个ID号码被打印到屏幕上。我不知道在哪里检查我的代码,因为它应该继续获取id号码直到文件结尾。
任何帮助将不胜感激。谢谢!
如果遇到空行会发生什么? (同样,你有一个缺失END IF。) – 2014-11-05 22:25:02
和'C'和'EOL'没有被定义在任何地方 – egilhh 2014-11-05 22:35:51
我修正了“END IF;”部分,它仍然没有读取任何东西,但第一行。我改变了我的数据文件的顺序,在第一个id之前有一个空行,它仍然只读取第一个id。更新:也宣布EOL和C – EPKasper 2014-11-05 22:47:12