Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 有没有办法限制命令行参数的数量?_C_Bash_Echo_Argv_Argc - Fatal编程技术网

C 有没有办法限制命令行参数的数量?

C 有没有办法限制命令行参数的数量?,c,bash,echo,argv,argc,C,Bash,Echo,Argv,Argc,我正在尝试在C中实现命令'echo' 我希望将命令“echo”后面的整个句子读入命令行中的argv[1],而不是将每个单词作为单独的参数传递 这在C语言中是可能的吗?您可以通过使用argc循环检查argv的每个元素,以确保您不会读得太深 您还可以要求程序的启动为:/myProgram“这是我的好句子”您不能直接执行此操作,因为shell甚至在程序启动之前就在拆分参数 也许你想要这样的东西: #include <stdio.h> #include <string.h> i

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

我希望将命令“echo”后面的整个句子读入命令行中的argv[1],而不是将每个单词作为单独的参数传递


这在C语言中是可能的吗?

您可以通过使用
argc
循环检查
argv
的每个元素,以确保您不会读得太深

您还可以要求程序的启动为:
/myProgram“这是我的好句子”

您不能直接执行此操作,因为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);
}

这与C语言无关。shell创建参数列表。换句话说,不,这是不可能的。您可以使用循环并使用strncat系统调用将它们收集到一个字符串中。或者您可以像这样调用您的程序
myecho“hello world”
,然后
“hello world”
将被shell视为一个参数,并且在您的C程序中
argv[1]
将指向
“hello world”
。但是这又是一个shell的东西。所以如果参数在“…”之间,它被认为是一个单独的参数?@ShiviBarlev是的,但这与C无关,shell正在这样做。谢谢!我可能会做你说的第二件事。
> myecho Hello World 1 2 3
sentence = "Hello World 1 2 3"