我正在尝试在C语言中实现命令'echo'。
我想将命令'echo'之后的整个句子读入命令行中的argv [1]中,而不是将每个单词作为一个单独的参数传递。
在C语言中有可能吗?
答案 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"