有没有一种方法可以限制命令行参数的数量?

时间:2019-11-27 09:37:25

标签: c bash echo argv argc

我正在尝试在C语言中实现命令'echo'。

我想将命令'echo'之后的整个句子读入命令行中的argv [1]中,而不是将每个单词作为一个单独的参数传递。

在C语言中有可能吗?

2 个答案:

答案 0 :(得分:1)

您不能直接执行此操作,因为即使在程序启动之前,shell也会拆分参数。

也许您想要这样的东西:

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
  char sentence[500] = { 0 };

  for (int i = 1; i < argc; i++)
  {
    strcat(sentence, argv[i]);
    if (i < argc - 1)
      strcat(sentence, " ");
  }

  printf("sentence = \"%s\"", sentence);
}

免责声明:为简洁起见,没有进行边界检查。

调用示例:

> myecho Hello World 1 2 3
sentence = "Hello World 1 2 3"

答案 1 :(得分:0)

您可以使用argv来遍历argc的每个元素,以确保您不会读得太深。
您也可以要求启动程序为:./myProgram "Here is my nice sentence"