C 有没有办法限制命令行参数的数量?
我正在尝试在C中实现命令'echo' 我希望将命令“echo”后面的整个句子读入命令行中的argv[1],而不是将每个单词作为单独的参数传递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语言中是可能的吗?您可以通过使用
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"