C中的命令行参数无法正确打印

时间:2015-10-23 00:05:28

标签: c command-line arguments

我试图测试我的程序如何接收用户命令行输入:

我要测试的命令行输入是:

"./concordance 15 < input.txt"

程序的其余部分可以工作但是要测试参数。所以在我的主要功能中我有这个:

int main(int argc, char *argv[])
{
    int i;
    for (i = 0; i < argc; i++)
    {
        printf("%s\n", argv[i]);          //runs through command line for arg
    }
    printf("%d\n", argc);                 //prints total arguments
    return 0;
}

问题是当我输入命令行时,程序会打印:

./concordance
15
2

我的程序工作我需要打开input.txt文件,所以我的问题是,为什么程序只打印&#34; ./ concordance&#34;,&#34; 15&#34;如果我有&#34;&lt;&#34;和&#34; input.txt&#34;在命令行?

由于

2 个答案:

答案 0 :(得分:1)

<不会被解释为命令行参数,而是被shell解释为将标准输入重定向为指定文件而不是父标准输入,通常是shell。

答案 1 :(得分:0)

命令行与&#34; stdin&#34;之间存在差异。 - &#34; 15&#34;是命令行参数。 shell看到&#39;&lt;&#39;和#34;重定向&#34;您的程序中的文件stdin流。

如果你不想使用stdin来处理文件,只需传递它的名字然后自己打开:./concordance 15 input.txt(argv [2]将是input.txt)