【问题标题】:Command Line argument in C not printing correctlyC 中的命令行参数无法正确打印
【发布时间】:2016-01-22 10:15:59
【问题描述】:

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

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

"./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 文件,所以我的问题是,为什么程序只打印“./concordance”和“15”以及如果我有“

谢谢

【问题讨论】:

    标签: c command-line arguments


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      命令行和“stdin”之间存在区别——“15”是命令行参数。 Shell 看到 'stdin 流。

      如果您不想使用标准输入处理文件,只需传递它的名称并自己打开:./concordance 15 input.txt(argv[2] 将是 input.txt)

      【讨论】:

      • 哦,所以我应该使用标准输入然后打开文件?抱歉,我对 c 有点陌生
      • 如果您使用&lt;,该文件已经“是”标准输入。如果您使用scanf 等,它将从您的文件而不是键盘中读取。如果没有更多关于你在做什么的上下文,很难判断使用标准输入还是显式文件更好(直觉告诉我显式文件......)
      • ohhhhh 好的哇,现在完全有道理了,谢谢。是的,它基本上采用带有一堆字符串的文本文件并输出它们的一致性。
      • 基于此,我认为文件比尝试使用标准输入更有意义。那里有很多 C 文件 IO 示例。
      猜你喜欢
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多