我在从文件中读取输入时遇到一些麻烦。所以我所做的是制作一个概念验证程序,这是我的主程序中的一部分,它可以做更多但是我只是在阅读输入时遇到了麻烦。 这是我的概念验证程序:
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号直到文件结尾。
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
当您Get
第二个(和第三个)行时,将引发Data_Error异常,因为456784a
不是数字,'a'不是数字字符。如果您希望它是十六进制数字,则输入应为16#456784a#(默认情况下)。