如何在C程序中执行系统命令“echo”以打印出2D数组中的所有元素?我试过了,但它没有用。
输入:
char myarray[1][10] = {"Hello", "World"};
system("echo $myarray");
预期产出:
Hello World
目前我没有得到任何输出。
更新1(约束): 我无法分配更多内存 - 我只能使用myarray变量。 我可以使用任何其他标量或指针变量。
答案 0 :(得分:1)
在调用system
之前,您需要在单个字符串中构建整个命令。类似的东西:
char myarray[2][10] = {"Hello", "World"};
// ^ notice
char mycommand[42];
strcpy(mycommand, "echo \"");
strcat(mycommand, myarray[0]);
strcat(mycommand, " ");
strcat(mycommand, myarray[1]);
strcat(mycommand, "\"");
system(mycommand);
答案 1 :(得分:1)
我假设这是在Linux机器上,而不是Windows!
系统命令echo
将您要打印的参数作为参数。所以你认为
echo $myArray
会打印出来
$myArray
但它没有。 $
表示"在环境变量列表中查找以下字符串并打印该"。并且myArray
未在您的环境变量列表中定义,因此它不会打印出任何内容。它肯定不会在您的计算机程序中打印出变量!
如果您将呼叫更改为
system("echo $path");
你会得到一个长字符串打印出来,列出了许多目录。这是您当前的path
。
但这些都不能解决你的问题。您要做的是使用Hello World
命令打印echo
。这意味着您需要(有效地)使用以下参数调用system()
函数:
system("echo Hello world");
你能做到的唯一方法就是"构建"您希望它打印出来的字符串,然后告诉system()
完整的字符串。
所以你需要以下内容:
#define NUMSTRINGS 2 // Note that there are 2 strings!
char myArray[NUMSTRINGS][10] = {"Hello", "world"};
char command[256] = "echo"; // Start command
int i;
for (i=0; i<NUMSTRINGS; ++i) {
strcat(command, " "); // Space separator
strcat(command, myArray[i]); // Next string
} // for
system(command);
答案 2 :(得分:0)
这不起作用,因为myarray
是C中的变量,$myarray
是shell中的环境变量。他们彼此没有关系 - 正如“阅读,英格兰”和“阅读新闻”没有任何关系。
如果要将变量传递给shell,可以尝试setenv()
。