将命令行参数和文本文件传递给程序

Posted

技术标签:

【中文标题】将命令行参数和文本文件传递给程序【英文标题】:Passing a Command Line Argument and a textfile to a program 【发布时间】:2016-06-20 10:48:05 【问题描述】:

我有一个读取和反向编码任务,我需要传递一个文本文件和一个字符(-L-W),具体取决于操作员是希望按行还是按单词反向返回文本文件。 (我还应该注意,分配要求在代码期间不向用户询问任何内容。必须决定在命令行中需要哪种变体。)

我不需要代码帮助来反转行或单词,但需要帮助来理解如何接收字符和文本文件,然后在代码中使用它们。我尝试在main 上使用参数(int argc, char *argv[]),但无论何时我尝试只传入-L,终端都会显示Command not foundclang: error: argument to '-L' is missing (expected 1 value)

另外,当我的老师将文本文件传递给程序时,他经常使用>。谁能解释一下这个怎么用?

例如。 program.c > hello.txt

然后他最终会在程序中使用那个.txt

【问题讨论】:

你是如何尝试通过 -L 的? 我猜> 用于重定向。如果是这样,./a.out > hoge.txt 表示./a.out 的标准输出将不是终端而是hoge.txt 命令program.c > hello.txt 看起来很奇怪。是否有Cinterpreter(或者编译器隐藏在软件中)直接在他的环境中执行C源文件 请注意,>(和<)是由 shell 处理的 I/O 重定向操作符——程序既看不到操作符也看不到以下文件名。听起来您可能需要:./your-program -L input-file.txt > output-file.txt 作为命令行,-W 作为替代方案。如果既没有指定-L 也没有指定-W,你的程序会做什么?它可能应该默认为一个或另一个。同样,如果没有文件传递,你会怎么做?然后正常行为是读取标准输入。如果传递了许多文件,则依次处理每个文件。查找getopt() 函数。 【参考方案1】:

考虑一下:

program -L < data.txt

program -W < data.txt

cat data.txt | program -L

“-L”或“-W”将位于argv[1]

祝你好运!

【讨论】:

【参考方案2】:

传递命令行参数的思路如下

Argc:为执行而传递的“字符串”(参数)的参数计数器数量。 它总是 1 或更大,因为函数的调用是一个参数。

Argv:参数向量(pointers),是指向命令行接收到的每个参数的指针

程序调用示例

./myprogram -w

argc=2

argv 将有两个指向字符串(char)的指针:

argv[0]="./myprograms"

argv[1]="-w"

现在解决您的问题

通过命令行执行程序时,您有很多选择:

1) 其中之一是提供文件的程序输入(文件将逐个字符传递到以 EOF 或 -1 结尾的标准输入 - 不是 ascii 字符 -) 这些可以通过以下方式完成

./program.c

2)将程序的输出重定向到一个文件

./program.c > hello.txt

您要做的是在传递参数时输入文件,这可以通过以下方式完成

./program.c < hello.txt -L

重要提示:“

argc=2

argv[0]="./program.c"

argv[1]="-L"

如果您需要更多帮助或不清楚的地方,希望这有助于发表评论。祝你的课程好运!!!

【讨论】:

谢谢!这应该对我有帮助。我现在要去健身房,但今晚晚些时候会编写代码。如果我需要更多帮助,我一定会问。 小问题,你将如何实际使用来自./program.c &lt;hello.txt -L 的信息(特别是.txt 文件中的信息。 你应该使用 getchar()、gets(..) 和其他函数来获取字符来管理 stdInput 检查这个链接它的解释很好。tutorialspoint.com/cprogramming/c_input_output.htm

以上是关于将命令行参数和文本文件传递给程序的主要内容,如果未能解决你的问题,请参考以下文章

如何传递文件中包含的命令行参数并保留该文件的名称?

如何将任意命令行参数从 MinGW shell 传递给本机 Windows 程序?

打开文本文件作为命令行参数传递[关闭]

将命令行参数输入文件传递给要解析的类

如何将参数(不是命令行参数)传递给批处理脚本中的函数

如何将参数从 bat 文件或命令行传递给 plpgsql 函数?