Ada编程:使用S'Length实现字符串处理时输出内容异常问题求助
调整方案
你当前代码的问题是输出语句仅打印了String_Length函数返回的长度整数,没有输出原字符串本身。同时要满足题目要求的「主程序输出时必须调用该字符串的长度值」,我们可以用函数返回的长度作为字符串切片的上界,输出完整原字符串即可。
修改后的完整代码
with Ada.Text_IO; use Ada.Text_IO; with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; procedure String_Program is function String_Length (S : in String) return Integer is begin return S'Length; end String_Length; S : String (1 .. 3); begin Put("Type a string containing 3 letters: "); Get(S); Put("You typed the string: "); -- 用长度函数返回值做切片上界,既调用了要求的函数,又输出原字符串 Put(S(1 .. String_Length(S))); end String_Program;
调整说明
- 完全保留了所有题目要求的规则:
String_Length子程序仅接收字符串参数,内部用S'Length获取长度返回整数值,主程序输出时调用了该长度值用来指定字符串切片范围。 - 输出的切片
S(1 .. String_Length(S))就是你输入的完整原字符串,符合预期运行效果。 - 原代码里
String_Length函数中的临时变量Res是冗余的,这里做了简化,如果你需要保留可以自行加回去不影响功能。
内容的提问来源于stack exchange,提问作者leun
相关产品推荐
相关产品推荐

