C 中的命令行参数无法正确打印
Command Line argument in C not printing correctly
我正在尝试测试我的程序如何接收用户命令行输入:
我要测试的命令行输入是:
"./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”以及如果我只看到 2 个参数命令行中有“<”和"input.txt"?
谢谢
<
不被解释为命令行参数,而是由 shell 解释为将标准输入重定向为指定文件而不是父标准输入,通常是 shell.
命令行和 "stdin" 之间存在差异 - “15”是命令行参数。 shell 在它的 stdin
流上看到“<”和 "redirects" 文件到您的程序。
如果您不想使用标准输入来处理文件,只需传递它的名称并自行打开:./concordance 15 input.txt
(argv[2] 将是 input.txt)
我正在尝试测试我的程序如何接收用户命令行输入:
我要测试的命令行输入是:
"./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”以及如果我只看到 2 个参数命令行中有“<”和"input.txt"?
谢谢
<
不被解释为命令行参数,而是由 shell 解释为将标准输入重定向为指定文件而不是父标准输入,通常是 shell.
命令行和 "stdin" 之间存在差异 - “15”是命令行参数。 shell 在它的 stdin
流上看到“<”和 "redirects" 文件到您的程序。
如果您不想使用标准输入来处理文件,只需传递它的名称并自行打开:./concordance 15 input.txt
(argv[2] 将是 input.txt)