Ada的命令行参数
我正在写一个Ada程序,它应该对字母字符进行大小写转换。程序使用1、2或3个命令行参数。我几乎已经把这件事写好了,但我不知道该怎么做。命令行参数用于:Ada的命令行参数,ada,Ada,我正在写一个Ada程序,它应该对字母字符进行大小写转换。程序使用1、2或3个命令行参数。我几乎已经把这件事写好了,但我不知道该怎么做。命令行参数用于: 指定要进行大写转换还是小写转换的单个字符 应用于输入。”U'或U'表示大写转换;'L'或L'指定小写 转换。此参数是程序运行所必需的 (可选)用于输入大写/小写转换的文件名。 如果未指定此参数,则程序必须从标准输入读取 (可选,仅在还提供了第三个命令行参数时使用)的名称 用于加密或解密过程输出的文件。如果此参数为 未指定,程序必须写入标准输出 有
有什么帮助吗?您可以使用标准软件包访问命令行参数 对于参数的数量,您有
Argument\u Count
。
您有
参数(数字:正)
来获取位置数字
处的参数字符串。Ada.Command\u行包是标准的,完全适合您的任务
使用Ada.command\u行进行更复杂的命令行解析变得很困难。如果您的命令行需要命名关联而不是位置关联,请参阅使用Gnat.command_line上的这一部分(如果需要的话,可移植性较低,但更像Unix的命令行参数和选项序列)
还有一个我已经在一个小项目中成功使用过的方法。我建议这样做,正如使用Ada.Command\u Line所说的:
with
Ada.Text_IO,
Ada.Command_Line,
Ada.Strings.Bounded;
use
Ada.Text_IO,
Ada.Command_Line;
procedure Main is
package SB is new Ada.Strings.Bounded.Generic_Bounded_Length (Max => 100);
use SB;
Cur_Argument : SB.Bounded_String;
Input_File_Path : SB.Bounded_String;
Output_File_Path : SB.Bounded_String;
I : Integer := 1;
begin
-- For all the given arguments
while I < Argument_Count loop
Cur_Argument := SB.To_Bounded_String(Argument(I));
if Cur_Argument = "U" or Cur_Argument = "u"
then
-- stuff for uppercase
elsif Cur_Argument = "L" or Cur_Argument = "l"
then
-- stuff for lowercase
elsif Cur_Argument = "i"
then
-- following one is the path of the file
Input_File_Path := SB.To_Bounded_String(Argument(I+1));
i := i + 1;
elsif Cur_Argument = "o"
then
Output_File_Path := SB.To_Bounded_String(Argument(I+1));
i := i + 1;
else
Put_Line("Wrong arguments");
end if;
i := i + 1;
end loop;
end Main;
与
Ada.Text_IO,
Ada.命令行,
Ada.Strings.Bounded;
使用
Ada.Text_IO,
命令行;
主要程序是
包SB是新的Ada.Strings.Bounded.Generic_Bounded_Length(最大=>100);
利用某人;
Cur_参数:SB.Bounded_字符串;
输入文件路径:SB.Bounded\u字符串;
输出文件路径:SB.Bounded\u字符串;
I:整数:=1;
开始
--对于所有给定的参数
当我计数循环时
Cur_参数:=SB.To_有界字符串(参数(I));
如果Cur_Argument=“U”或Cur_Argument=“U”
然后
--大写的东西
elsif Cur_Argument=“L”或Cur_Argument=“L”
然后
--小写的东西
elsif Cur_Argument=“i”
然后
--下面是文件的路径
输入文件路径:=SB.To有界字符串(参数(I+1));
i:=i+1;
elsif Cur_Argument=“o”
然后
输出文件路径:=SB到有界字符串(参数(I+1));
i:=i+1;
其他的
放线(“错误参数”);
如果结束;
i:=i+1;
端环;
端干管;
+1,用于在ADA中编写程序。最好拼写为女士的名字。此程序不符合规范:您发明了“i”和“o”,第一个参数是必需的,必须是l | l | u | u。如果用户在“i”或“o”之后漏掉文件名,会发生什么情况?没错,但我没有发现类似的情况。我认为完全检查文件路径(如果路径丢失就会失败)是另一个主题。使用GNAT时,在GNAT.Command_行中使用高级api要容易得多。资料来源: