将多个参数传递给C程序

时间:2013-11-20 15:08:32

标签: c command-line

我写了一个小C程序,它以3个整数作为参数。如果我这样运行:myapp 1 2 3运行良好,argc正确显示4,但如果我执行:echo 1 2 3 | myapp,则argc只显示1。

C代码的相关部分是:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char **argv)
{
printf("Entered: %i\n", argc);
if ( argc < 4)
{
printf("You must enter 3 integers as command line arguments!\n");
exit(1);
}
}

这有什么问题?

3 个答案:

答案 0 :(得分:4)

echo 1 2 3 | myapp在没有参数的情况下调用myapp。值通过stdin传递。

你可能想要使用它(如果在Unix中使用bash):

    myapp `echo 1 2 3`

或者,如果你在一个名为numbers.txt的文件中有一个数字列表,你也可以这样做:

    myapp `cat numbers.txt`

答案 1 :(得分:3)

管道将第一个进程的输出传递给第二个进程的stdin,这与命令行参数无关。你想要的是xargs,它使用第一个进程的输出并将其用作命令行参数:

echo 1 2 3 | xargs myapp

答案 2 :(得分:0)

echo 1 2 3 | myapp会将1 2 3发送到您程序的标准输入。如果您的程序没有读取它,它将永远不会看到这些数字。您需要使用例如scanf来实现此目的。请注意,您必须自己解析字符串以计算以这种方式传递的“参数”的数量。