我有可以使用GNAT-GPS完美运行和编译的Ada程序。当我运行其exe文件并提供用户输入时,而不是说“按任意键继续”,该exe立即关闭。
我已经在线搜索了很多,但是我只使用system('pause')找到了与c / c ++ / visual studio控制台窗口有关的信息;或Console.Readline()。
Ada lanaguage有什么办法解决这个问题吗?
除了使用Get_Line或之外Get,您还可以Get_Immediate从Ada.Text_IO包中使用。区别在于,当将标准输入连接到交互式设备(例如键盘)时Get_Line,Get它将继续读取用户输入,直到<Enter>被点击为止,而Get_Immediate仅阻塞直到按下单个键。
这是一个例子:
with Ada.Text_IO; use Ada.Text_IO;
procedure Main is
begin
-- Do some interesting stuff here...
declare
User_Response : Character;
begin
Put_Line ("Press any key to continue...");
Get_Immediate (User_Response);
end;
end Main;
Run Code Online (Sandbox Code Playgroud)
笔记
您应该在交互式终端(Bash,PowerShell等)中运行该程序,以实际查看的效果Get_Immediate。从GPS内运行程序时,仍然必须按Enter键才能实际退出程序。
这可能太多了,但我认为Get仍然要等待<Enter>按下,因为它使用fgetc了C标准库(libc)的后台程序(请参见此处和此处)。该函数fgetc从C流读取。C流最初是为交互设备(源)行缓冲的。