【问题标题】:How do I use a .txt file as a command line input in such a way that its contents are read as command line input in C?如何使用 .txt 文件作为命令行输入,使其内容被读取为 C 中的命令行输入?
【发布时间】:2020-03-31 22:55:46
【问题描述】:

我的程序要求我进行一些二进制转换。第一个 arg[0] 是文件名,arg[1] 指定转换类型,arg[2] 指定表示转换的位数,arg[3] 是十进制或二进制数,具体取决于转换。我的工作是使用这个 .txt 文件作为命令行输入,这样我的 arg[] 就是 .txt 文件中的每个字符串。我的.txt文件如下:

#!/bin/bash
./binary -d2b -8 12
./binary -d2b -8 127
./binary -d2b -8 128
./binary -d2b -8 255
./binary -d2b -8 300
./binary -d2b -16 300
./binary -d2b -32 300
./binary -d2b -16 32767
./binary -d2b -16 32768
./binary -d2b -64 300
./binary -b2d -8 101010
./binary -b2d -8 111100001
./binary -b2d -16 111100001
./binary -b2d -16 111100001111
./binary -b2d -16 1111000011110000
./binary -b2d -32 1111000011110011
./binary -b2d -32 111100001111000011110000
./binary -b2d -32 11111111111111111111111111111111
./binary -abc -8 101
./binary -b2d -9 101
./binary -b2d -8 121
./binary -d2b -8 1a1
./binary -d2b -8

如何使 .txt 文件的每一行都被计为命令行输入中的 argv[] 参数?

【问题讨论】:

  • 如果您的 txt 文件字面上以 #!/bin/bash 开头,是什么阻止您运行 ./file.txt?

标签: c


【解决方案1】:

我意识到这显然是一个家庭作业,但你似乎没有抓住重点,也许老师没有正确解释。

此文本 (.txt) 文件是一个 Unix shell 脚本。通常我们会为这种文件使用.sh 扩展名。您可以通过第一行的#! 轻松判断这一点。此标记之后的文本告诉系统解释器用于解析和执行文件的其余内容。在这种情况下,它指示它使用/bin/bash,这通常是默认的shell。

所以...只要这个文件是可执行的(例如chmod +x filename),运行它(通过输入./filename)将执行一个名为binary的程序,并将argv[0]设置为binary和后续索引设置为后续值。

如果您在当前目录中提供一个名为binary 的C 风格的可执行文件,它将把argv 参数中指定的参数传递给它的主函数。

【讨论】:

  • 我认为chmod +x filename 是比chmod 755 文件名更好的例子,因为它更符合语义。
  • @Aplet123 是的……旧习惯难改!我会更新我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-19
  • 1970-01-01
  • 2014-03-31
  • 1970-01-01
  • 2023-03-16
  • 2010-09-16
  • 1970-01-01
相关资源
最近更新 更多