Ada:用键盘到达行尾
在我的Ada程序中,我尝试从键盘读取一个最多100个字符的字符串。Put_Line语句用于调试。
我发现该例程无法找到End_of_Line(行结束符)。我发现无论我使用Get_Immidiate、Get还是Get_Line,结果都是一样,行尾无法被找到。
我该如何获得结果?下面是我尝试的一段代码。
我使用GNAT Studio System,且在Windows 11上。
function Read_str return String is
In_String : string (1 .. 100);
Nr : integer;
begin
Put_Line ("Start Read_str");
Nr := 1;
While not End_Of_Line
loop
Get_Immediate(In_String(Nr));
Put_Line("Invoer = " & integer'image(Nr));
Put_Line("String = " & In_String(6.. Nr));
then
exit;
end if;
Nr := Nr + 1;
end loop;
return In_String;
end Read_str;
解决方案
Get_Immediate在从键盘读取Enter键时的行为被ARM规范描述得不清楚。GNAT在 Linux上返回LF;ObjectAda在 Windows上返回CR。End_Of_Line可能与Get_Immediate配合不佳;相反,你应该检查LF或 CR。请参阅 Password_Line 以了解一个使用Get_Immediate,从键盘读取一行(不回显)的示例,该示例对两种编译器都能工作。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。