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

时间:2016-03-07 00:28:34

标签: c command-line command text-files line

我有一个读取和反向编码赋值,我需要传递一个文本文件和一个字符(-L-W),具体取决于操作符是否需要按行反向返回的文本文件或用文字。 (我还应该注意,分配要求在代码期间不要求用户提供任何内容。必须在命令行中确定需要哪个变体。)

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

此外,当我的老师将文本文件传递给程序时,他经常使用>。有人可以解释如何使用它吗?

实施例。 program.c > hello.txt

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

2 个答案:

答案 0 :(得分:0)

考虑一下:

program -L < data.txt

program -W < data.txt

cat data.txt | program -L

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

祝你好运!

答案 1 :(得分:0)

传递命令行争论的想法如下

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

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

程序调用的

示例

  

./ myprogram -w

的argc = 2

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

argv [0] =“./myprograms”

argv [1] =“ - w”

现在解决您的问题

通过命令行排除程序时,您可以选择以下方法:

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

  

./ program.c&lt; hello.txt的

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

  

./ program.c&gt; hello.txt的

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

./program.c < hello.txt -L

重要:“&lt; hello.txt”不会作为参数计算,因此对于这种情况,argc和argv将是以下情况

的argc = 2

的argv [0] = “./ program.c”

的argv [1] = “ - L”

如果您需要更多帮助或有些不明确的话,希望这有助于评论。祝你的课程顺利!