Ada Get_Line未等待响应
在我一直在做的一个程序中,我遇到了这个奇怪的问题。如果我试图在Ada中使用get_行在已经做了之前的问答之后请求用户的响应,那么程序不会等待响应。我制作了一个小的演示程序来复制这个问题。在我的情况下,我不能使用无界字符串。我有使用绑定字符串的说明Ada Get_Line未等待响应,ada,Ada,在我一直在做的一个程序中,我遇到了这个奇怪的问题。如果我试图在Ada中使用get_行在已经做了之前的问答之后请求用户的响应,那么程序不会等待响应。我制作了一个小的演示程序来复制这个问题。在我的情况下,我不能使用无界字符串。我有使用绑定字符串的说明 WITH Ada.Text_IO; USE Ada.Text_IO; PROCEDURE StrPractice IS Name : String (1 .. 5); NextName : String (1 .. 10); Len
WITH Ada.Text_IO; USE Ada.Text_IO;
PROCEDURE StrPractice IS
Name : String (1 .. 5);
NextName : String (1 .. 10);
Len : Natural;
BEGIN
Put("Enter first name? "); --5 digit terry
Get(Name);
new_line;
Put_line("First Name: " & name);
New_Line;
Put("Enter next name:");
Get_Line(NextName, Len);
new_line(2);
Put_Line("Next name: " & NextName(1..Len));
END StrPractice;
我不确定是什么导致了这个问题。我认为缓冲区可能需要清除,所以我装箱了一个字符变量c并使用get(c),但这并没有纠正我的问题。我在这里搜索了一下,但没有看到同样的情况。任何帮助都将不胜感激。问题是,当您输入
名称时,必须先输入换行符,程序才能看到您的输入。但是,Get
不使用换行符;因此,当调用Get_Line
时,它会看到换行符仍在输入缓冲区中,并将其视为输入行的结尾。您可以使用Skip\u Line
使用换行符:
Put("Enter first name? "); --5 digit terry
Get(Name);
Skip_Line;
new_line;
Put_line("First Name: " & name);
New_Line;
毫无疑问,在输入名称
之后,您正在按Enter键,但是Get
不会占用行尾。因此,当您稍后调用Get\u Line
时,它仍然在缓冲区中。尝试添加对Skip_Line
的呼叫以使用该行的结尾。祝福您!是的,这纠正了问题。我以为这是在抢夺我的入场券,但就我个人而言,我不知道该如何应对。非常感谢你!好的,那我就把它作为答案贴出来。